asp.net-mvc – Asp.net MVC 3验证在TryUpdateModel中排除了一些字段验证
发布时间:2020-05-24 12:04:17 所属栏目:asp.Net 来源:互联网
导读:我正在使用ASP.NET MVC Razor和Data Annotation验证器 我的模特: public class Person { public int id { get; set; } [Required] public string FirstName { get; set; } [Required] public string
|
我正在使用ASP.NET MVC Razor和Data Annotation验证器
public class Person
{
public int id { get; set; }
[Required]
public string FirstName { get; set; }
[Required]
public string LastName { get; set; }
}
FirstName和LastName是Requerd. public ActionResult Edit([Bind(Include = "FirstName")]Person person)
{
var p = GetPerson();
if (TryUpdateModel(p))
{
//Save Changes;
}
}
但是TryUpdateModel总是返回false.因为LastName无效. 如何防止在TryUpdateModel中检查LastName的检查? 注意: >代码是简化的.我真正的代码很复杂 解决方法我找到了Nice Solution.我必须从ModelState中删除未使用的Field.然后ModelState.IsValid返回true.首先我需要Create New Attribute类:public class ValidateOnlyIncomingValuesAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
var modelState = filterContext.Controller.ViewData.ModelState;
var valueProvider = filterContext.Controller.ValueProvider;
var keysWithNoIncomingValue = modelState.Keys.Where( x=>!valueProvider.ContainsPrefix(x) );
foreach (var key in keysWithNoIncomingValue)
modelState[key].Errors.Clear();
}
}
然后我在我的方法上添加属性: [ValidateOnlyIncomingValuesAttribute]
public ActionResult Edit([Bind(Include = "FirstName")]Person person)
{
var p = GetPerson();
if (ModelState.IsValid)
{
TryUpdateModel(p);
//Save Changes;
}
}
看看这个:http://blog.stevensanderson.com/2010/02/19/partial-validation-in-aspnet-mvc-2/ (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – 获取客户端隐藏字段的值
- asp.net – 什么是动词=“*”?
- asp.net – 可以从外部xml文件读取web.config吗?
- 休息 – OData与GraphQL GraphQL比较OData有什么优势?
- asp.net-mvc-4 – @ Html.Raw坚持编码引号
- asp.net – 在Web.config帮助中定义tagPrefixes
- asp.net – iTextSharp可以栅格化/导出为JPEG或其他图像格式
- asp.net-mvc – 我只是不了解TDD单元测试(Asp.Net MVC项目)
- ASP.NET Dropdownlist selectedindexchanged事件未在向上/向
- asp.net-mvc – 可以将页脚添加到MVCContrib网格吗?
推荐文章
站长推荐
热点阅读
