具有前缀的控件的Asp.Net MVC2 Clientside验证问题
问题是:当我在页面上放置2个相同类型的控件时,我需要为绑定指定不同的前缀.在这种情况下,在表单不正确之后生成的验证规则.那么如何让客户端验证工作呢?
该页面包含: <% Html.RenderPartial(ViewLocations.Shared.PhoneEditPartial,new PhoneViewModel { Phone = person.PhonePhone,Prefix = "PhonePhone" }); Html.RenderPartial(ViewLocations.Shared.PhoneEditPartial,new PhoneViewModel { Phone = person.FaxPhone,Prefix = "FaxPhone" }); %> 控件ViewUserControl< PhoneViewModel>: <%= Html.TextBox(Model.GetPrefixed("CountryCode"),Model.Phone.CountryCode) %> <%= Html.ValidationMessage("Phone.CountryCode",new { id = Model.GetPrefixed("CountryCode"),name = Model.GetPrefixed("CountryCode") })%> 其中Model.GetPrefixed(“CountryCode”)只返回“FaxPhone.CountryCode”或“PhonePhone.CountryCode”,具体取决于前缀 这是表单后生成的验证规则.它们被复制为字段名“Phone.CountryCode”.虽然所需的结果是每个FieldNames“FaxPhone.CountryCode”,“PhonePhone.CountryCode”的2个规则(必需,数量) 这个问题与Asp.Net MVC2 Clientside Validation and duplicate ID’s problem有些重复 解决方法
为文本框和验证设置相同前缀的正确方法:
<% using (Html.BeginHtmlFieldPrefixScope(Model.Prefix)) { %> <%= Html.TextBoxFor(m => m.Address.PostCode) %> <%= Html.ValidationMessageFor(m => m.Address.PostCode) %> <% } %> 哪里 public static class HtmlPrefixScopeExtensions { public static IDisposable BeginHtmlFieldPrefixScope(this HtmlHelper html,string htmlFieldPrefix) { return new HtmlFieldPrefixScope(html.ViewData.TemplateInfo,htmlFieldPrefix); } private class HtmlFieldPrefixScope : IDisposable { private readonly TemplateInfo templateInfo; private readonly string previousHtmlFieldPrefix; public HtmlFieldPrefixScope(TemplateInfo templateInfo,string htmlFieldPrefix) { this.templateInfo = templateInfo; previousHtmlFieldPrefix = templateInfo.HtmlFieldPrefix; templateInfo.HtmlFieldPrefix = htmlFieldPrefix; } public void Dispose() { templateInfo.HtmlFieldPrefix = previousHtmlFieldPrefix; } } } (偶然在史蒂夫桑德森的博客http://blog.stevensanderson.com/2010/01/28/editing-a-variable-length-list-aspnet-mvc-2-style/的代码中找到了解决方案) 看起来像Html.EditorFor方法应该像这里建议的那样工作:ASP.NET MVC 2 – ViewModel Prefix (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 如何在ASP.NET Core MVC中获取Url Referrer?
- asp.net-mvc-3 – 在具有默认值的模型上注释属性
- 如何使用ASP.NET.Core Angular模板添加字体真棒
- asp.net mvc4 jquery不工作
- asp.net – 双列表拖放控件
- asp.net – jQuery blackberry ajax问题
- asp.net-mvc – 如何降级Visual Studio 2012中的Entity Fra
- asp.net-mvc – 如何在不给每个控制器放置注释的情况下授权
- entity-framework – 使用“迁移”实体框架6.0.2中的错误
- asp.net-mvc – 关于Ajax调用Register动作方法的书呆子晚餐
- 在ASP.NET中,获取基本UR1请求的最快方法是什么?
- 非常非常简单的asp.net页面需要永远加载
- asp.net-mvc – 使用jQuery $.ajax()和$.post()发
- asp.net-mvc – Web API,OData,$inlinecount和测
- asp.net-mvc – 如何在MVC3中存储用户首选项
- asp.net – 如何为每个Azure部署插槽使用不同的w
- asp.net – 如何通过render事件禁用CalendarExte
- 用asp.net MVC局部视图加载jquery
- asp.net-mvc – 如何使用存储库模式处理表关系?
- ASP.NET MVC授权:角色的权限