我有一个局部视图。它的型号是一本书的对象和客户对象HTML.BeginForm不会调用控制器asp.net MVC 4
我试图用一个输入类型=用下面的提交按钮:
@using (Html.BeginForm("GetBooks", "Home", FormMethod.Post, new { id = "formId" }))
{
}
我可以获取用户输入的值与var values = $('#formId').serialize();
但当点击按钮时,控制器不会被调用。
所以,我决定使用jquery ajax()方法,它似乎工作正常,通过调用控制器并传入模型。但是,它不会将更新的模型(用用户输入更新)发送到控制器。 AJAX的
例如:
$.ajax({
url: "/Home/GetBooks",
data: JSON.stringify({ model: @Html.Raw(Json.Encode(Model)) }) ,
type: 'POST',
contentType: 'application/json',
beforeSend:function(){
$("#loading").show();
},
success: function(data) {
append(data)
},
error: function (e, textStatus, jqXHR) {
$("#loading").hide();
alert(e.statusText);
},
complete:function(){
$("#loading").hide();
}
});
我需要重新分配用户输入的值到Book模型之前我叫Ajax的方法,但是我不确定如何做到这一点。我传递这两个图书和用户模型回控制器作为
JSON.stringify({model: @Html.Raw(Json.Encode(Model))})
控制器看出:
[HttpPost]
public ActionResult GetBooks(ModelObjects model)
{
}
型号:在查看
public class ModelObjects
{
public MVC4App.Models.Customer Customer{ get; set; }
public MVC4App.Models.Book Book{ get; set; }
}
public class Customer
{
public string FirstName{ get; set; }
public string LastName{ get; set; }
}
public class Book
{
public string Name{ get; set; }
}
模型参考:
@model MVC4App.Models.ModelObjects
谢谢 提前!
这仍然不能解释为什么输入按钮不起作用,但为此,您需要用视图和控制器操作中使用的模型来更新问题。 – 2013-05-13 18:26:13
是的,我有:var values = $('#formId')。serialize();有没有一种方法可以在Jquery中使用它来更新模型,其效果如下:@Model.Customer = values; 这样,当我发送:JSON.stringify({model:@ Html.Raw(Json.Encode(Model))}),它将被更新为正确的值。 – alpha 2013-05-13 18:47:25
@alpha,我已经更新了答案,因此它更好地解释了要做什么。 – 2013-05-13 18:53:20