如何创建自定义“类型”属性用于Asp.net MVC中的textboxfor
本文关键字:Asp 用于 属性 net MVC textboxfor 中的 类型 何创建 创建 自定义 | 更新日期: 2023-09-27 18:11:02
我在MVC工作。我曾经陷入一种困境。如我们所知,
@Html.Textboxfor
有一个名为type的属性,用于检测文本框可以接受的输入类型。
对于示例:type = "email"以email作为输入,如果验证失败,则显示错误消息,如"Please Enter valid email Address"
type = "number"只接受数字作为输入,如果文本需要使用则显示验证消息。
我想我的文本框将采取手机/电话号码(与国家代码和没有国家代码以及。例如+ 9177777777777)。
所以我可以创建我自己的自定义"type"属性,可以完成上述任务,并可以生成我自己的验证消息,如果验证失败?
您正在谈论的属性type
是<input />
html元素的属性。根据HTML5规范,这个属性只能有几个有效值。点击这里查看:http://www.w3schools.com/html/html5_form_input_types.asp
所以,你不能添加任何类型的"自定义"值,这意味着浏览器会自动验证。我认为,您需要的是能够根据特定的电话号码格式验证输入。为此,您需要在模型类的属性上使用[RegularExpression]
属性(完全不同的东西,但命名相同)。这一点,加上不显眼的客户端验证,将为您提供您想要的行为。
type
属性的不同值使您能够调用浏览器的本地客户端验证支持。对于自定义格式,使用通用type="text"
并将正则表达式放在pattern
属性中。浏览器将显示一个错误弹出窗口,其中包含来自title
属性的消息。
在你的视图中你可以这样写:
@Html.TextBoxFor(m => m.PhoneNumber, new { pattern = "'d{3}-'d{3}-'d{4}" })
假设属性名称为PhoneNumber
。您的正则表达式将根据您想要支持的实际格式而有所不同。
我认为值得一提的是另一对与验证相关的属性:
-
required
-
maxlength
关于本地客户端验证的更多信息在这里:http://www.html5rocks.com/en/tutorials/forms/constraintvalidation/
也许我错过了什么,但你可以简单地说以下(取代???因此):
@Html.TextBoxFor(m => m.???, new { type = "???" })
这是可能的,你会在这里找到你喜欢的解决方案:http://www.asp.net/mvc/tutorials/older-versions/views/creating-custom-html-helpers-cs
编辑:我一直在想你的问题,我想我错了。你可以添加你所谓的"Custom Type
"使用Mvc"Template
"。
例如:在视图的" Shared
"文件夹中创建一个" DisplayTemplates
"目录
在这个新的,创建一个PartialView
类型与您的自定义模型。把你想要的所有东西放到你的新局部视图/模型中去做你想做的事情。
After进入您的主视图页面。只需调用@Html.DisplayFor(model=>model.YourNewCustomModel)
和MVC做剩下的。当然,您的新CustomModel必须是主调用页面模型的一部分。