发布到MVC4中的控制器
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
是应该有的,POST
在type
字段中。
$.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
从视图到控制器的数据值
- 作为强类型模型对象。(针对特定型号)
- 作为动态类型(使用@model dynamic)
- 使用ViewBag
现在,当您使用html助手时,您可以返回带有传递的对象模型的视图,它将自动将视图中的数据填充为:
强类型模型对象
<%@ Page Title="#" Language="VB" MasterPageFile="#" Inherits="System.Web.Mvc.ViewPage(Of somemodel)" %>
将视图渲染为
Return View("your View Path", modelObject)
以下是我为使这种方法发挥作用所做的:
在页面(.cs.html)中:
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进行操作,然后发送到控制器进行处理。这甚至可以是一个大型复杂的模型,我已经尝试过了。不再有回帖、页面闪烁和重写。。。
- 在指令控制器中使用$attrs时出现问题
- 有没有任何方法可以将控制器从文件加载到ui路由器$stateProvider中
- 模型数据未通过窗体传播到控制器ASP.NET MVC4
- 如何将对象列表传递到MVC4中的控制器方法
- Mvc4将Jquery可排序列表项的顺序保持到控制器
- 将加密的剃须刀密码字段发送到 mvc4 控制器
- 将对象列表从控制器传递到 MVC4 中的视图
- 如何在 mvc4 控制器操作的 httpget 上将缓存设置为 false
- MVC4 JsTree 将选定的节点传递给控制器
- c# mvc4 Html.DropDownList用于调用控制器
- MVC4将所有表单数据(模型)从javascript传递到控制器 - 这是可能的
- 单击按钮时运行控制器方法MVC4 C#
- MVC4无法使用AJAX调用控制器方法
- 发布到MVC4中的控制器
- 如何在mvc4中从视图发送多个参数到API控制器
- 如何在mvc4和jquery中获取动态生成文本框的值并向控制器发出ajax请求
- 向MVC4控制器发布对象的javascript数组
- 将json对象传递给mvc4控制器-作为Nothing传递的数组
- Ajax jquery发送空值到Mvc4控制器
- 如何在MVC4中将值从控制器传递到Javascript