我有许多从基本 ViewModel 类继承的子 ViewModel 类。
我将我的子 ViewModel 传递到我的 View 中,然后将其自身传递到局部视图中。主视图采用子类型,但部分视图采用父类型。
当我手动填充属性时,一切都正确显示。但是,当我提交表单时,我的控制器操作只有子类的属性 - 没有完成任何基类属性?
例如
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 中:ViewSource 显示表单标记位于两个 tetxbox 周围。
但是,当我提交给控制器方法时:
[HttpPost]
public ActionResult EditLocal (LocalDetails model)
model.Visits 已正确填充,但 model.Name 为空?
有任何想法吗?我在类中添加了无参数构造函数,因为如果我没有提交,我会在提交时遇到异常。