asp.net-mvc – .NET MVC不显眼的验证和自定义模型绑定器
发布时间:2020-12-16 09:47:15 所属栏目:asp.Net 来源:网络整理
导读:我有一个简单的MVC网站,显示一个 jquery对话框用于编辑目的.在此对话框中是一个textarea,它接受用户可以输入的以逗号分隔的技能列表.提交后,我的模型绑定器将其转换为List.这是我的模型绑定器的代码 public class EditSkillsModelBinder : DefaultModelBinde
我有一个简单的MVC网站,显示一个
jquery对话框用于编辑目的.在此对话框中是一个textarea,它接受用户可以输入的以逗号分隔的技能列表.提交后,我的模型绑定器将其转换为List.这是我的模型绑定器的代码
public class EditSkillsModelBinder : DefaultModelBinder { protected override void OnModelUpdated(ControllerContext controllerContext,ModelBindingContext bindingContext) { var form = controllerContext.HttpContext.Request.Form; var skillsAsString = form["SkillsAsString"]; var user = bindingContext.Model as UserEditDetailsModel; //FOR VALIDATION ValueProviderResult valueResult = bindingContext.ValueProvider.GetValue(bindingContext.ModelName); ModelState modelState = new ModelState {Value = valueResult}; if (string.IsNullOrEmpty(skillsAsString)) { bindingContext.ModelState.AddModelError("Skills","You must enter at least one skill."); } else { user.Skills = string.IsNullOrEmpty(skillsAsString) ? new List<string>() : skillsAsString.Split(',').Select(i => i.Trim()).ToList(); } } } 这是我的部分视图的代码 @using (Ajax.BeginForm("EditUserDetails",new { },new AjaxOptions { },new { id = "EditUserDetailsForm" })) { @Html.ValidationSummary(true) <fieldset> <legend>UserEditDetailsModel</legend> <div class="editor-label"> @Html.LabelFor(model => model.FirstName) </div> <div class="editor-field"> @Html.EditorFor(model => model.FirstName) @Html.ValidationMessageFor(model => model.FirstName) </div> <div class="editor-label"> @Html.LabelFor(model => model.LastName) </div> <div class="editor-field"> @Html.EditorFor(model => model.LastName) @Html.ValidationMessageFor(model => model.LastName) </div> <div class="editor-label"> @Html.LabelFor(model => model.Skills) </div> <div class="editor-field"> @Html.TextArea("SkillsAsString",Model.Skills.ToCommaSeparatedString()) @Html.ValidationMessageFor(model => model.Skills) </div> <p> <input type="submit" value="Save" /> </p> </fieldset> } @*Enable Client Side Validation*@ <script type="text/javascript"> $(document).ready(function () { $.validator.unobtrusive.parse("#content_container > form"); }); </script> 所有我的简单验证,如[必需]在客户端工作.模型绑定程序验证也可以,但是,不会显示错误消息.我假设我在javascript中遗漏了一些注册错误,但我无法弄清楚它是什么.任何帮助,将不胜感激.谢谢. 这是问题的屏幕截图 解决方法
所以我抛弃了不引人注意的东西,我发现我的技能模型上有[必需]属性导致屏幕截图中的验证,而不是模型绑定器的验证.
虽然模型绑定器不用于验证,但似乎尝试将验证属性和模型绑定器混合用于相同的模型属性会导致问题(至少在我尝试将字符串转换为列表的情况下),因此,我正在严格验证在我的模型绑定器(提供额外的功能),它已开始工作. 编辑 我应该补充说,我删除了验证属性,支持每this post的FluentValidation.它更简洁,与客户端验证集成,更易于使用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 在ASP.NET中的Response.Redirect中传递cookie
- asp.net – Application_error函数间歇性捕获“文件不存在”
- asp.net-mvc – ASP.NET MVC身份默认实现
- 在ASP.NET MVC中使用MySQL的AccountController
- asp.net-mvc – MVC 5:Asp.net身份:如何建模UserRole
- ASP.Net将用户数据存储在验证Cookie中
- 在asp.net中是否有等效的回声c#
- asp.net – HttpContext.Current.User.Identity.Name为null
- asp.net – 跟踪SignalR连接ID以查看它们是否真的存在
- asp.net – 导致StackOverflowException的Sitecore控制器渲
推荐文章
站长推荐
- 使用asp.net发送20,000封电子邮件
- asp.net – 从没有Html帮助器的表单传递数据
- asp.net-mvc – Html.HiddenFor值属性未设置
- active-directory – 你能通过ADFS获得用户列表吗
- asp.net – 第一次访问网站需要非常长的时间(总共
- environment-variables – 如何在生产环境中设置
- asp.net-mvc – 限制每个动作的HTTP动词
- asp.net-core – ASP.NET Core忽略ASPNET_ENV和H
- asp.net – 不能在aspx页面的部分使用Response.W
- asp.net-mvc-3 – 如何传递Request.QueryString到
热点阅读