你可以尝试这样的事情:
为表单创建一个基本模型。该基本模型将具有其两个子模型共有的属性和验证属性:
public class BaseModel {
[Required]
public string Name { get; set; }
}
public class Model1 : BaseModel {
public bool Form1 { get; set; }
}
public class Model2 : BaseModel {
public bool Form2 { get; set; }
}
然后,您可以创建两个接受这些模型作为参数的不同控制器操作:
public ActionResult PostForm1(Model1 model) { }
public ActionResult PostForm2(Model2 model) { }
您的部分视图必须根据它的形式添加一个输入:
<form action="<%=(isForm1 ? "/PostForm1" : "/PostForm2")>%">
<input type="hidden"
id="<%=(isForm1 ? "Form1" : "Form2")%>"
name="<%=(isForm1 ? "Form1" : "Form2")%>"
value="true" />
</form>
当一个表单被发布时,它应该只对其模型进行验证,而不影响另一个模型(您需要一个视图模型,它具有两个表单模型作为属性)。
我不确定这是否可行,但同样,您可以尝试一下。