【发布时间】:2017-02-10 20:20:26
【问题描述】:
这是我的场景:
public class ComplexObject
{
public int SomeProperty {get;set;}
public List<SimpleObject> Object {get;set;}
}
public class SimpleObject
{
public string FirstName {get;set;}
public string LastName {get;set;}
}
我为SimpleObject创建了一个强类型的局部视图
@model SimpleObject
<div>
<input type="button" value="Button" name="btn" />
<div>
<div>
@Html.TextBoxFor(Model => Model.FirstName, new { @class = "", @maxlength = "50" })
</div>
<div>
@Html.TextBoxFor(Model => Model.LastName, new { @class = "", @maxlength = "50" })
</div>
现在我想在另一个视图 (MainView) 中渲染这个局部视图。这个想法是用户可以单击 SimpleObject 部分视图按钮并 在 MainView 上再次生成相同的局部视图。所以这是它的外观:
MainView
SimpleView -> Add
SimpleView -> Add
我可以创建一个 ajax 操作并生成简单视图并将其附加到主视图,但问题是 simpleobject 没有绑定到 ComplexObject。
这就是我在 MainView 中渲染局部视图的方式。
@Html.Partial("_PartialView", Model.SimpleObject, new ViewDataDictionary(ViewData)
{
TemplateInfo = new System.Web.Mvc.TemplateInfo
{
HtmlFieldPrefix = "Simple"
}
})
MainView 在提交单击时调用控制器操作,并提交整个ComplexObject。这里我的SimpleObject 列表始终为 NULL。
public ActionResult CreateComplex(ComplexObject object)
{
// HERE LIST<SIMPLEOBJECT> is always NULL
}
任何想法我在这里做错了什么?
【问题讨论】:
-
A
partial本身不起作用,因为您没有将索引器添加到name属性。一些选项请参考this answer
标签: asp.net asp.net-mvc asp.net-mvc-4 asp.net-mvc-5