Asp.net 如何忽略对模型属性的验证?

Asp.net 如何忽略对模型属性的验证?,asp.net,asp.net-mvc-3,Asp.net,Asp.net Mvc 3,一,。e如何在忽略if(modelstate.Isvalid){}上的其他(该模型的属性)时对模型的单个属性应用验证?模型 using System.ComponentModel.DataAnnotations; namespace abc.Model { using System; using System.Collections.Generic; public partial class check_master { public int MCheck_id { get; set;

一,。e如何在忽略if(modelstate.Isvalid){}上的其他(该模型的属性)时对模型的单个属性应用验证?
模型

using System.ComponentModel.DataAnnotations;
namespace abc.Model
{
using System;
using System.Collections.Generic;

public partial class check_master
{
    public int MCheck_id { get; set; }
    [Required]
    public string check_name { get; set; }
    public string field { get; set; }
    public Nullable<byte> max_length { get; set; }
    public int check_id { get; set; }
}
}
使用System.ComponentModel.DataAnnotations;
名称空间abc.Model
{
使用制度;
使用System.Collections.Generic;
公共部分类检查主机
{
public int MCheck_id{get;set;}
[必需]
公共字符串检查\u name{get;set;}
公共字符串字段{get;set;}
公共可空最大长度{get;set;}
公共整数检查\u id{get;set;}
}
}

查看

@使用(Html.BeginForm(“addCheck”和“”)
{
@DropDownList(“check_master”、“--select checks--”)
@Html.TextBox(“checkName”,“”)
@Html.ValidationMessage(“检查名称”)


}

如果应该忽略其他模型属性,为什么要使用验证属性装饰它们?这没有任何意义,也不可能


使用视图模型。为不同的情况定义不同的视图模型,并基于视图模型和情况仅装饰需要验证的属性。或者更好的是,不要装饰任何东西,用它来以一种流畅而有力的方式表达您的验证需求。

使用
[Bind(Exclude=“Property\u Name”)]
这是一个有点老的问题,但我不相信它已经得到了正确的回答。操纵绑定根本不会改变操纵过程,因为验证是在绑定之前/同时进行的。 与上面的示例一样,将属性标记为excluded仍将生成错误的modelstate.isvalid属性

关于验证问题,最推荐的方法似乎是创建专用的ViewModels,因为它可以同时处理一些您可能知道或不知道的其他问题

ViewModels的替代方法是操纵modelstate对象,以拾取并选择(或排除)要验证的属性,如下所示:

(这里有一些额外的代码用于删除魔术字符串)


以上内容将排除Id属性的验证。如果愿意,您可以将代码转换为以独占方式验证Id属性。

我只修饰了单个属性,但我的modelstate仍然不是valid@Kannas,啊,这是不正常的,尤其是在调用控制器操作时传递有效值时。您想与我们分享任何代码吗?请详细说明:模型、控制器、视图。提供一份。你能同时提供参考资料吗?
  @using (Html.BeginForm("addCheck", ""))
  {
  <input type="hidden" id="from" name="from" value="@ViewBag.from" readonly="readonly"  />
   <fieldset>


        <tr>
            <td>
                @Html.DropDownList("check_master", "--select checks--")
            </td>
            <td>
                @Html.TextBox("checkName", "")
                @Html.ValidationMessage("check_name")
            </td>
        </tr>
    </table>
</fieldset>
<p>
    <input type="submit" value="Add" />
</p>
var modelPropAsString = nameof(yourmodel)+"."+nameof(yourmodel.Id);

        if (ModelState[modelPropAsString ].Errors.SingleOrDefault() != null)
        {
            ModelState[modelPropAsString ].Errors.Clear();
            yourmodel.Id = 0;
        }