我有两个模型只是因需要的字段而不同,我希望能够使用相同的视图来显示它们。
我有一个UserEdit类
public abstract class UserEdit
{
public User User { get; set; }
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string NewPassword { get; set; }
[DataType(DataType.Password)]
[Display(Name = "Confirm password")]
[EqualTo("NewPassword")]
public string ConfirmPassword { get; set; }
}
以及将所需属性添加到NewPassword和ConfirmPassword属性的UserCreate类。
class UserCreate_Metadata
{
[Required]
public string NewPassword { get; set; }
[Required]
public string ConfirmPassword { get; set; }
}
[MetadataType(typeof(UserCreate_Metadata))]
public partial class UserCreate : UserEdit
{
}
如果我将模型绑定到特定的类,那么这两个在视图中都可以正常工作:
@model Siaa.NextWeb.Data.UserEdit
或
@model Siaa.NextWeb.Data.UserCreate
有没有办法让视图检测它绑定到哪个类,以便它获取UserCreate类的额外验证要求?我尝试使用动态视图,但收到“表达式树可能不包含动态操作”,研究已经向我指出了用于创建编辑器的lambda表达式
@Html.EditorFor(model => model.User.FirstName)
答案 0 :(得分:0)
最直观的方法是将两个模型组合到一个总是传递给视图的模型上。然后简单地在模型上添加某种标志,以确定应该使用哪一个。
public class UserViewModel {
public UserCreate CreateModel { get; set; }
public UserEdit EditModel { get; set; }
public bool IsCreatingUser { get; set; }
}
然后在你看来:
@if (Model.IsCreatingUser) {
//Build your form.
} else {
//Build your form.
}