确定ajaxpost中的模型类型
我有一个ASP.NET MVC视图。在我看来,我想发出一个AJAX Post请求来更新视图中的PartialView 这是我的模型:确定ajaxpost中的模型类型,ajax,asp.net-mvc,asp.net-mvc-4,asp.net-ajax,Ajax,Asp.net Mvc,Asp.net Mvc 4,Asp.net Ajax,我有一个ASP.NET MVC视图。在我看来,我想发出一个AJAX Post请求来更新视图中的PartialView 这是我的模型: public class HomeListViewModel { public MainQueryViewModel MainQuery { get; set; } // other properties } 这是我的观点(有部分观点): 如果我将参数类型更改为:MainQuery,则它可以正常工作: [HttpPost] [ValidateA
public class HomeListViewModel
{
public MainQueryViewModel MainQuery { get; set; }
// other properties
}
这是我的观点(有部分观点):
如果我将参数类型更改为:MainQuery
,则它可以正常工作:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult List(MainQuery MainQuery)
{
var myModel = MainQuery; // <-- all ok
// some action
}
[HttpPost]
[ValidateAntiForgeryToken]
公共操作结果列表(MainQuery MainQuery)
{
var myModel=MainQuery;//您使用的Html.Partial()
正在生成具有name
属性的表单控件,这些属性与MainQueryViewModel
相关,而不是HomeListViewModel
首选的方法是使用编辑器模板
,它将为名称
属性添加前缀,以便获得name=“MainQuery.someProperty”
,而不是当前获得的name=“someProperty”
将分部的名称更改为MainQueryViewModel.cshtml
(以匹配类的名称),并将其移动到/Views/Shared/EditorTemplates
(或/Views/yourControllerName/EditorTemplates
)文件夹中,并生成html使用
@Html.EditorFor(m => m.MainQuery)
添加前缀的另一个选项是使用additionalViewData
@Html.Partial("_MainQuery", Model.MainQuery,
new ViewDataDictionary { TemplateInfo = new TemplateInfo { HtmlFieldPrefix = "MainQuery" }})
有关将其简化为@Html.PartialFor(m=>m.MainQuery,“\u MainQuery”)
的扩展方法,请参阅
@Html.EditorFor(m => m.MainQuery)
@Html.Partial("_MainQuery", Model.MainQuery,
new ViewDataDictionary { TemplateInfo = new TemplateInfo { HtmlFieldPrefix = "MainQuery" }})