C# 是否可以将ModelState.IsValid仅应用于数据实体模型的一个表?

C# 是否可以将ModelState.IsValid仅应用于数据实体模型的一个表?,c#,asp.net-mvc-4,C#,Asp.net Mvc 4,因此,我目前有一个视图需要一个完整的数据实体来显示,但我只想将一个表的数据发布到控制器并验证它 @model MvcExample.Models.DataEntities @using(Html.BeginForm("ActionMethod", "Controller")){ @Html.AntiForgeryToken() @Html.ValidationSummary(true) <table id="setupTable"&

因此,我目前有一个视图需要一个完整的数据实体来显示,但我只想将一个表的数据发布到控制器并验证它

@model MvcExample.Models.DataEntities   
@using(Html.BeginForm("ActionMethod", "Controller")){
         @Html.AntiForgeryToken()
         @Html.ValidationSummary(true)
        <table id="setupTable">
            <tr>
                <td>@Html.LabelFor(model => model.DataField.Local.First().data, "Data:")</td>
                <td>@Html.TextBoxFor(model => model.DataField.Local.First().data, new{id="dataField"})
                    @Html.ValidationMessageFor(model => model.DataField.Local.First().dataField)
                </td>
            </tr> 
<input type="submit" value="submit" />  
} 

假设你有这两个模型。
MainModel
是您的整个数据集,
SubsetModel
是您需要发回控制器操作的数据

public class MainModel
{
   public FieldOne First {get;set}
   public FieldTwo Second {get;set}
   public FieldThree Third {get;set;}
   public FieldFour Fourth {get;set;}
}

public class SubsetModel 
{
   public FieldOne First {get;set;}
   public FieldTwo Second {get;set;}
}
您的控制器操作可以被告知只需等待子模型返回post即可

public ActionResult DoSomething(SubsetModel subset)
{
  //do something
}

在您看来,您只需要在表单中包含相关字段,或者使用Javascript/JQuery将数据发布回控制器。只要表单中的字段具有正确的名称,模型绑定器将创建您的操作所期望的子模型

在许多级别上似乎都是错误的,为什么不添加多个部分或创建使用多个表中属性的自定义对象呢?IsValid是与来自视图的模型绑定的属性。现在这取决于你的模型是线性模型,那么它只用于验证一个表。如果它很复杂,那么它应该验证该模型中的所有表。@LIUFA已经沿着这条路径开始了,老实说,我只是好奇这是否可行。@azhar_SE_nextbridge我也这么认为,谢谢你直截了当的回答。这在复合模型的情况下是不可能的。这绝对是完美的。非常感谢你!
public ActionResult DoSomething(SubsetModel subset)
{
  //do something
}