我刚接触MVC 4和Razor。我有一个包含多个局部视图的视图。由于局部视图的功能,我计划在其他视图中重复使用它们。
我的模型是一组复杂对象,例如:
public class EmployeeInfo
{
public EmployeeContactInfo contactInfo { get; set; }
public List<TelephoneInfo> phoneDetails { get; set; }
public AddressDetails addressDetails { get; set; }
}
我的主视图模型是EmployeeInfo
,其他局部视图的模型分别为TelephoneInfo
、EmployeeContactInfo
和AddressDetails
。我尝试使用
RenderPartial
、RenderAction
和Partial
来加载我的局部视图,例如: @using (Html.BeginForm())
{
@Html.Partial("ContactInfo",Model.contactInfo)
}
当主表单提交时,主模型不具有部分视图的更新值。我搜索了这个问题,并发现了以下两个解决方案:
1. 使用 `EditorFor` - 这个方法可行,模型会得到更新,但是我有一个不仅包含文本框而且还包含其他控件的集合,这些控件还具有一些内部操作(比如搜索地址),我还需要在其他地方重用同样的部分视图(比如在经典 ASP.NET 中的用户控件)。
2. 使用 `RenderAction` 而不是 `RenderPartial` - 对我来说它没有起作用。
如果我理解有误或者做错了什么,请告诉我。