[英]Posting to a controller in MVC4
我在这里问了几个问题,没有任何可行的答案。 我可能走错了路或被问错了。 基本上,我想做的是在页面中加载VAR:
var testModel = @Html.Raw(JSON.Encode(Model))
然后使用jQuery和JavaScript处理反映原始模型的testModel属性,然后使用AJAX请求将其发布回控制器方法:
$.ajax({
datatype: 'json',
data: testModel // ?? or some other way?
// etc
});
控制器:
public ActionResult PostModel (ModelName model) // or JsonResult
{
//do things
return Json(model); // or return View?
}
任何帮助,将不胜感激。
我已经尝试了其他人在下面提出的建议,但是该事务始终无法通过控制器方法实现。 为什么不?
Ajax类型指定请求的类型。 (获取或发布) 详细信息
$.ajax({
type: 'POST',//or GET
dataType: 'json',
data: testModel // ?? or some other way?
// etc
});
type
表示您正在发出的请求的类型,而不是您要取回的数据的类型。 dataType
是您应该在此处输入的内容,然后在type
字段中type
POST
。
$.ajax({
type: 'POST',
dataType: 'json',
data: testModel // ?? or some other way?
// etc
});
基本上,您是通过javascript发布数据,因此成功后需要一个Json对象来解析,因此需要return Json(model)
:
public ActionResult PostModel (ModelName model) // or JsonResult
{
//do things
return Json(model);
}
和您的JS
为:
$.ajax({
type: 'POST',
url: '{somecontroller}/{someaction}',
cache: false,
contentType: 'application/json; charset=utf-8',
data:testModel,
success: function (object) {
$.each(object, function (key, val) {
//do your stuff here
})
})
key
是您的Model Property
name
和val分别是其值
现在消除您的困惑“何时返回View?” 有三种方法可以将信息从控制器传递到ASP.NET MVC中的视图。 我们使用HTML帮助器来生成html字段并将其与模型绑定,以将数据值从视图Get/Post
到控制器
现在,当您使用html帮助器时,可以返回带有传递的对象模型的视图,该模型将自动以以下方式填充视图中的数据:
强类型模型对象
<%@ Page Title="#" Language="VB" MasterPageFile="#" Inherits="System.Web.Mvc.ViewPage(Of somemodel)" %>
渲染为
Return View("your View Path", modelObject)
这是我为使此方法起作用而所做的工作:
在页面(.cshtml)中:
function SendJsonData() {
localModel.itemNumber = $("#txtItemNumber").val();
// etc for the rest of the fields
$.ajax({
url: '@Url.Action("PostModel", "ItemControl")',
data: JSON.stringify(localModel),
dataType: 'json',
cache: false,
type: 'POST',
contentType: 'application/json, charset=utf-8',
success: function(data) {
//do stuff
},
error: function () {
alert('error');
}
});
然后在控制器中:
[HttpPost]
public JsonResult PostModel(ItemModel localModel)
{
//do stuff with data model
return Json(localModel);
}
这很好用,在我看来,这是使用MVC4及更高版本的大多数应用程序的方法。 这样,整个模型就在页面中,并且可以轻松地用jQuery和JavaScript进行操作,然后发送到控制器进行处理。 我尝试过,它甚至可以是大型的复杂模型。 不再需要发帖,页面闪烁和重写...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.