我有许多继承自基本ViewModel类的子ViewModel类。
我将我的子ViewModel传递到视图中,然后再将自己传递到部分视图中。 主视图采用子类型,但部分视图采用父类型。
当我手动填充属性时,一切都正确显示。 然而,当我提交表单时,我的控制器操作只有子类的属性 - 没有完成任何基类属性?
例如:
public abstract class BaseDetails
{
public string Name { get; set; }
public BaseDetails()
{ }
public BaseDetails(string name)
{
Name = name;
}
}
public class LocalDetails:BaseDetails
{
public int Visits { get; set; }
public LocalDetails()
{ }
public LocalDetails(int visits, string name)
:base(name)
{
Visits = visits;
}
}
使用以下简单的视图:
@using (Html.BeginForm())
{
@Html.TextBoxFor(m => m.Visits)
<br />
@Html.Partial("Name", Model)
<input id="Submit1" type="submit" value="submit" />
}
这个局部视图上只有一个文本框。
在IE中:查看源代码会显示form标签将两个文本框都包含在内。
然而,当我提交到控制器方法时:
[HttpPost]
public ActionResult EditLocal (LocalDetails model)
model.Visits已正确填充,但model.Name为空?
有什么想法吗? 我向类中添加了无参构造函数,因为如果不这样做,我会在提交时收到异常。