带有前缀的控件的 Asp.Net MVC2 客户端验证问题

2024-06-22

问题是:当我在页面上放置 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

<%= Html.TextBox(Model.GetPrefixed("CountryCode"), Model.Phone.CountryCode) %>
<%= Html.ValidationMessage("Phone.CountryCode", new { id = Model.GetPrefixed("CountryCode"), name = Model.GetPrefixed("CountryCode") })%>

where Model.GetPrefixed("CountryCode")仅返回“传真电话.国家/地区代码”或“电话电话.国家/地区代码”,具体取决于前缀


这是表单后生成的验证规则。它们对于字段名称“Phone.CountryCode”是重复的。虽然所需的结果是每个 FieldNames“FaxPhone.CountryCode”、“PhonePhone.CountryCode”有 2 条规则(必填,数字)替代文本 http://www.freeimagehosting.net/uploads/37fbe720bf.png http://www.freeimagehosting.net/uploads/37fbe720bf.png

这个问题有点重复Asp.Net MVC2客户端验证和重复ID的问题 https://stackoverflow.com/questions/2675606/asp-net-mvc2-clientside-validation-and-duplicate-ids-problem但手动生成 ids 的建议没有帮助。


为文本框和验证设置相同前缀的正确方法:

<% using (Html.BeginHtmlFieldPrefixScope(Model.Prefix)) { %>
   <%= Html.TextBoxFor(m => m.Address.PostCode) %>
   <%= Html.ValidationMessageFor(m => m.Address.PostCode) %>
<% } %>

where

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;
        }
    }
}

(偶然在Steve Sanderson博客的代码中找到了解决方案http://blog.stevensanderson.com/2010/01/28/editing-a-variable-length-list-aspnet-mvc-2-style/ http://blog.stevensanderson.com/2010/01/28/editing-a-variable-length-list-aspnet-mvc-2-style/)

看起来 Html.EditorFor 方法应该和这里建议的一样有效:ASP.NET MVC 2 - ViewModel 前缀 https://stackoverflow.com/questions/2473399/asp-net-mvc-2-viewmodel-prefix

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

带有前缀的控件的 Asp.Net MVC2 客户端验证问题 的相关文章

  • 为什么验证不起作用并跳转到另一个页面?

    我写了一个customer display php来验证数据 到目前为止只有名字 但无论名字字段是否为空 网页都会跳转到customer search php并且没有更改数据库中的信息 为什么
  • 如何正确清理来自 AngularJS 控制器的无效输入的表单?

    我有一个 AngularJS 表单 其中包含 除其他字段之外 类型之一url 后者很重要 因为这会强制相应的输入成为有效的 URL 在某些条件下 例如 要关闭具有此类表单的模式对话框 我想以编程方式清除该表单 为此 我实现了方法reset基
  • 回形针不支持 .doc 文件

    在 Rails 4 0 2 中 我使用回形针 gem 上传文件 但它不支持 doc 文件 在文件上传字段下方 显示一条错误消息 扩展名与其内容不匹配 在模型中 检查内容类型的验证如下 validates attachment content
  • 禁用 notInArray 验证器 Zend Framework 2

    有没有办法在 Zend Framework 2 中禁用 notInArray Validator 互联网上的所有信息都显示如何在 Zend Framework 1 中禁用 notInArray Validator 例如以这种方式 如果您根本
  • Mac 应用程序商店 - 尝试让加密发挥作用。 。 。我缺少什么?

    我正在尝试使用 Alan Quartermain 的解决方案 如该问题所链接 Mac App Store 收据验证码 https stackoverflow com questions 4261348 mac app store recei
  • 使用 jquery 和 php 测试表单输入是否为 1 或 2 位整数

    我有一个表单 其中有五个字段全部设置为 maxlength 2 基本上 我希望唯一可以输入的值是一位或两位整数 因为在将值存储在数据库中之前对这些字段执行计算 是否有任何 jquery 不允许用户输入不是整数的值 另外 用 jquery 和
  • 如何检查引导模式是否打开,以便我可以使用 jquery 验证?

    仅当模态打开时我才需要进行验证 因为如果我打开它 然后关闭它 然后我按下打开模态的按钮 它就不起作用 因为它正在进行 jquery 验证 但不是显示是因为模式被驳回 所以我想在模态打开时添加一个jquery 以便我进行验证 这可能吗
  • 数据类型与 UiHint

    我已经使用 mvc2 一段时间了 当我需要设置模板时 我使用 DataType 属性 DataType DropDown public int Field get set 我看到其他人使用 UiHint 来达到相同的结果 UiHint Dr
  • 带有前缀的控件的 Asp.Net MVC2 客户端验证问题

    问题是 当我在页面上放置 2 个相同类型的控件时 我需要指定不同的绑定前缀 在这种情况下 表单之后生成的验证规则不正确 那么如何让客户验证该案例的工作呢 该页面包含
  • Jquery Validate - 类列表

    这可能是一个非常愚蠢的问题 但我正在寻找 jquery 表单验证器的内联验证规则列表 我知道我能找到这里有js函数 http docs jquery com Plugins Validation List of built in Valid
  • ckeditor 验证空格

    我如何在 ckeditor 上实现验证以防止用户仅添加空格 今天内的任何答复将不胜感激 以下是迄今为止我尝试进行的验证 Save note from ckeditor input save note click function var n
  • 如果我将 ValidateRequest 设置为 false 不是很危险吗?

    我在我的 asp net 项目的一些 Web 表单中使用 FreeTextBox HTML 编辑器 如果我不将 ValidateRequest 属性设置为 false 我会收到此错误 从客户端检测到潜在危险的 Request Form 值
  • 重置 Angular 7 Reactive 验证

    我使用 Angular Reactive 表单作为搜索表单 我希望能够重置表格 我用以下代码做到了这一点
  • DatePicker 上的日期验证器在 IE7/IE8 中触发漏报

    我对包含两个 jQuery UI DatePickers 的表单进行了一些基本验证 日期的格式为 yy mm dd 有一个required and date对两个 DatePicker 进行验证 这些在 Chrome 和 FF 中按预期工作
  • 我应该清理 Markdown 吗?

    对于我的帖子实体 我将 HTML 和 MARKDOWN 存储在数据库中 HTML 是从 MARKDOWN 转换而来 HTML 用于在页面上呈现 MARKDOWN 用于编辑功能 使用 WMD 我在存储到数据库之前清理 HTML 问题是 我也应
  • 使用 atoi() 对整数进行输入验证

    include stdafx h include
  • 如何在 ASP.Net MVC 或等效控件中构建复合控件或模板控件?

    在我们当前的 ASP Net Webforms 应用程序中 我们有几个复合 模板服务器控件 它们的存在只是为了具有共同的外观和感觉 例如 我们有一个面板控件 它有一个标题 一个与面板内容相关的按钮位置 当然还有内容 在 MVC 中如何最好地
  • Spring @Valid 验证器未正确调用(Roo、Hibernate)

    我成功启动了一个新的 roo 项目 但现在我在验证登录页面时遇到问题 在将控制权传递给我的控制器之前 验证器似乎被阻塞了 我从来没有机会检查 BindingResult 我在这里和网上检查了几个类似的问题 我的代码似乎与他们正在做的事情一致
  • 如何在 Codeigniter 3 中上传时显示不允许的文件类型错误消息?

    我正在做一个基本的工作博客应用程序 https github com Ajax30 lightblog with 代码点火器 3 1 8 and 引导程序4 当然 这些帖子有主要图片 有一个默认图像如果用户没有上传图像 但是如果有图像is已
  • Angular 4 - 具有动态参数值的自定义验证器

    我编写了一个自定义验证器 用于检查日期是否高于某个最小日期 代码如下所示 export function validateMinDate min Date ValidatorFn return c AbstractControl gt if

随机推荐

  • new Date() 设置错误的月份

    我想解析一个字符串 甚至是整数 新日期 函数 但看看会发生什么 date 2015 12 13 2015 12 13 date 2015 12 13 date2 new Date date Sat Dec 12 2015 19 00 00
  • 在移动浏览器上自动播放视频元素

    我读到自动播放是不可能的 或者不建议在 iOS 和 Android 上进行 更多信息请参见 移动设备 Android Chrome 和 Firefox 上的 iframe HTML5 播放器无法自动播放 https stackoverflo
  • 如何将 Java 依赖项添加到 Google Dataflow 项目?

    我的 Java 项目有很多来自第三方库的 jar 以及我自己的代码 如何部署这些以便 Google Cloud Dataflow 可以使用它们 有有关如何在 Python 中执行此操作的文档 https cloud google com d
  • 如何将 ENUM 值从视图转换为字符串到控制器

    所以我已经知道如何获取字符串 整数 十进制 现在我在枚举的这一部分中苦苦挣扎 如何将枚举转换为字符串 Enum statecode apsp Customer BillingAddress StateCode Value Customer
  • 最大化 iFrame(因此它看起来是请求页面)

    我如何 跨浏览器兼容 最大化 iFrame 以便它看起来是 URL 栏中的页面 即使它是从不同的服务器提供的 我想这应该可行
  • 正则表达式匹配 json 中的键

    我正在尝试匹配这种类型的 JSON 中的键 define key1 some text and more key2 some text key3 more some text key4 some text 用这个正则表达式 lt s s w
  • python 多线程比顺序代码更快...为什么?

    在许多有关 python 多线程的堆栈溢出问答中 我读到 python 有 GIL 因此多线程比顺序代码慢 但在我的代码中它看起来并不像 这是多线程代码 代码已更新2023年2月21日 import threading import tim
  • 将java线程分布在多个服务器上?

    我对 java 很陌生 并且非常喜欢学习它 我编写了一个运行良好的程序 但当我添加更多数据来处理时 它会花费一些时间 我把它做成了线程化 它确实加快了很多速度 但现在我正在考虑尝试加快它的速度 显然 它需要处理的数据越多 所需的时间就越长
  • 如何接收语音(通话中)流类型的音量更改事件?

    我正在尝试注册一个广播接收器来处理VOLUME CHANGED ACTION活动 仅针对volume voice流类型 我根据经验认为是索引0 in Settings System VOLUME SETTINGS 标签EXTRA VOLUM
  • Cordova 2.7.0 PushPlugin“无法解析cordova”和“无法解析ctx”

    我做了什么 在 cordova android bin 中使用 create 创建了 cordova 项目 通过添加 PushPlugin科尔多瓦普拉曼 https github com apache cordova plugman 将 c
  • Azure Functions 部署源 Visual Studio Team Service 项目

    我正在尝试链接 Azure Functions 部署以与 Visual Studio Team Service 集成 但是一旦我选择 VSTS 作为源 它就不会显示任何其他项目 我的帐户中还有其他来自 VSTS 项目的 Web 应用程序 这
  • 尾递归支持缩短其他函数调用的堆栈吗?

    支持尾递归的语言可以将相同的技术应用于非递归函数调用吗 例如 如果最后一个函数foo所做的是返回调用的值bar 语言可能会丢弃foo的堆栈框架 是否有已知的语言可以真正做到这一点 Erlang 确实如此 http learnyousomee
  • 在c#中过滤流

    在 C 中逐行过滤流 读取器的最简单方法是什么 有点像将 sed 放在管道中间 我想将 iCalendar 文件提供给DDay iCal but DDay iCal死在 VERSION 5 1 1 因为它想要一个number or 数字 分
  • Qt 文本选择白线和文本宽度

    我想在 QTextEdit 中自定义文本选择 我想要两件事 选择时删除空格 线条 能够选择选择的宽度 或者小部件宽度 或文本宽度 空白 线条 通常 我想要的是 来自 Bear 应用程序 熊文本选择 在使用 QTextEdit 小部件时 我注
  • 使用 Gulp-babel 并得到“严格模式下的参数名称冲突”

    我正在尝试使用吞咽通天塔 https www npmjs com package gulp babel所以我可以开始在我的 ES5 应用程序中编写一些 ES6 ES2015 代码 var gulp require gulp gutil re
  • 如何在 gradle 中使用 exec() 输出

    我正在尝试实现一个 gradle 任务 以从一系列环境变量值和 shell 执行动态创建 buildsignature properties 文件 我基本上可以正常工作 但我似乎无法获得 shell 命令的输出 这是我的任务 task ge
  • Python .Net 未加载 .Net Standard 2.0 dll

    我是Python新手 我开发了一个 C 库 Net Standard 2 0 并尝试使用 Python 加载它 导入CLR 通过安装 python net 包 问题是 如果我将 net 的版本更改为 1 4 或更低版本 则它可以工作 否则会
  • QComboBox:仅在展开时显示图标

    从 正常 开始QCombobox 我想要一个QCombobox仅在展开时显示图标 但在折叠时不显示图标 我找到了类似问题的几个答案 但它们都显示了更复杂情况的代码 而我还没有设法提炼出它的核心 我见过两种方法 QListView或使用QIt
  • 将查询作为存储过程中的参数传递

    我有一个存储过程 它接受nvarchar但它将成为查询的一部分 如下所示 Input Parameter InputQuery 21 OR RevenueAccrualID 22 我想将输入查询添加到现有查询中 UPDATE Revenue
  • 带有前缀的控件的 Asp.Net MVC2 客户端验证问题

    问题是 当我在页面上放置 2 个相同类型的控件时 我需要指定不同的绑定前缀 在这种情况下 表单之后生成的验证规则不正确 那么如何让客户验证该案例的工作呢 该页面包含