我想使用$ .POST或$ .AJAX实现创建(插入)屏幕。
注意:代码无需AJAX调用即可正常工作..它已经存在..现在我需要进行ajax调用并保存而无需回发。我写了下面的代码:
在提交点击事件时,代码如下:
$.ajax(
{
url: '@Url.Action("CreateProduct","ProductManagement")',
dataType: 'json',
contentType: 'application/json; charset=utf-8',
type: 'post',
data: $('frm').serialize(),
success: function () { alert('s'); },
error: function (e1, e2, e3) { alert(e2); alert(e1 + ' ' + e2 + ' ' + e3); alert('failure event'); }
}
);
});
在服务器端:
[HttpPost]
public JsonResult CreateProduct(FormCollection frm)
{
manager.ProductManager m = new manager.ProductManager();
// m.InsertProduct(new common.DTO.ProductDTO() { Id = id, ProductName = ProductName, Description = Description, Cost = cost, ProductTypeId = 5 });
return Json("'result':'success'", JsonRequestBehavior.AllowGet);
}
问题是,每次它都会调用操作,但在frm
参数param 上找不到数据。我也试图保持-视图模型ProductViewModel vm
作为参数,但是它没有用..只是给了我null值。同样,在ajax调用中,它成功但是。唯一的问题是控制器的动作上没有任何内容。
HTML如下:
@using (Html.BeginForm("CreateProduct", "ProductManagement", FormMethod.Post, new { id = "frm" }))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<fieldset>
<legend>ProductViewModel</legend>
<div id="CreateDiv">
<div class="editor-label">
@Html.LabelFor(model => model.ProductName)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.ProductName)
@Html.ValidationMessageFor(model => model.ProductName)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Cost)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Cost)
@Html.ValidationMessageFor(model => model.Cost)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Description)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Description)
@Html.ValidationMessageFor(model => model.Description)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.ProductTypeId)
</div>
<div class="editor-field">
@Html.DropDownList("ProductTypeId", "Choose item")
@Html.ValidationMessageFor(model => model.ProductTypeId)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.ProductTypeName)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.ProductTypeName)
@Html.ValidationMessageFor(model => model.ProductTypeName)
</div>
</div>
<p>
<input type="submit" value="Create" id="btnSubmit" />
</p>
</fieldset>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
请指导我这里出了什么问题。
谢谢
对于ID选择器,您必须使用带有ID的“#”。
这将起作用:
$.ajax(
{
url: '@Url.Action("CreateProduct","ProductManagement")',
dataType: 'json',
contentType: 'application/json; charset=utf-8',
type: 'post',
data: $('this').serialize(), OR $('#frm').serialize(), <-----------------
success: function () { alert('s'); },
error: function (e1, e2, e3) { alert(e2); alert(e1 + ' ' + e2 + ' ' + e3); alert('failure event'); }
}
);
或者尝试一下:
var form = $('#frm');
$.ajax({
cache: false,
async: true,
dataType: 'json',
contentType: 'application/json; charset=utf-8',
type: "POST",
url: form.attr('action'),
data: form.serialize(),
success: function (data) {
alert(data);
}
});
问题内容: 我正在尝试使用以下方法将使用jQuery Ajax的数据发布到MVC动作。但是在控制器内部,所有模型属性始终都是。不知道我在这里想念的是什么。 .CSHTML 的JavaScript 控制者 模型 EDIT1 我已经添加了上面的模型。单击保存后,此处显示序列化数据和JSON 数据。 序列化数据 后 我尝试添加属性和没有运气的属性。 我认为不必将返回类型从更改为。 该URL也是正确的,因
问题内容: 我试图实现对包含复杂对象作为参数的控制器操作方法的JQueryAJAX调用。我读了很多博客,并尝试了从中学习到的几种技巧。 我想触发一个异步发布,当用户在某个字段上制表符时调用该异步发布(不是表单保存发布–如我发现的其他示例所示)。 我的意图是: 在客户端上实例化一个对象(不是为View提供类型的ViewModel); 使用视图中多个字段中的数据填充对象; 将此对象转换为JSON; 使
问题内容: 我一直在这里看问题:将MVCajaxjson发布到控制器操作方法,但不幸的是,它似乎并没有帮助我。我的几乎完全相同,除了我的方法签名(但是我已经尝试过了,但仍然没有被击中)。 jQuery的 控制者 但是,无论我尝试什么,我都不会受到打击。通过调试,我知道它发送了一个请求,每次都会得到一个错误。 问题答案: 您的操作需要字符串参数,但是您要发送一个复合对象。 您需要创建一个与您要发送的
问题内容: 我是Java开发人员,刚接触.NET。我正在一个.NET MVC2项目中,我想要一个局部视图来包装小部件。每个JavaScript小部件对象都有一个将由模型数据填充的JSON数据对象。然后,当在窗口小部件中更改数据或在另一个窗口小部件中更改数据时,用于更新此数据的方法将与事件绑定。 代码是这样的: : : 我不知道如何发送数据,然后能够使用它来填充小部件以及将其转换为JSON。我已经在
我正在研究一种生成pdf的方法。为此,我使用tuespechkin库。转换本身就相当快。大部分时间需要从数据库中检索数据并创建pdf的html表示。为了提高性能,我尝试使用异步方法和PLinq,但它没有多大帮助。有没有办法优化这个方法? 代码中最昂贵的部分(更新):
问题内容: 我正在构建一个php应用程序,该应用程序需要将用户上传的图片直接发布到Instagram,但是在快速搜索后,我发现API中没有这样的功能:(感觉很奇怪…因为他们应该提供一个。我我不确定是否有其他方法(适用于Android和iOS的应用除外)使用php上传图片。如果有可能,请给我提出任何想法。 谢谢 问题答案: 如果您阅读了共享的链接,则可接受的答案是: 您无法通过API将图片发布到In