【发布时间】:2011-09-09 14:01:58
【问题描述】:
我有许多子 ViewModel 类继承自基础 ViewModel 类。
我将我的子 ViewModel 传递到我的 View 中,然后将其自身传递到局部视图中。 主视图采用子类型,而局部视图采用父类型。
当我手动填充属性时,一切都会正确显示。 但是,当我提交表单时,我的控制器操作只有 Child 类的属性 - 没有完成任何基类属性?
例如
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;
}
}
View 这么简单:
@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 为空?
有什么想法吗? 我在类中添加了无参数构造函数,因为如果我不这样做,我会在提交时遇到异常。
【问题讨论】:
-
只是为了澄清:这些是问题的例子,我真正的类/视图更复杂。
标签: asp.net-mvc-3 viewmodel base-class