ASP.NET 中的HTML5类型



Site将专门用于移动设备。因此,对于只需要数字输入的字段,我想调出数字键盘。我可以通过使用类型设置为 tel 的 html 输入元素来成功做到这一点。我想在此字段中添加一个基于 MSDN 的asp:RequiredFieldValidator

我需要将输入设置为 runat="server" .当我这样做时,我收到此错误;

tel 不是输入标记的有效类型。

如果我删除runat="server",我会得到

找不到''ControlToValidate 属性引用的控件 ID Contract

这是我的代码:

<input type="tel" runat="server" id="Contract"></input>
<asp:RequiredFieldValidator runat="server" ControlToValidate="Contract" 
                            ValidationGroup="IfOnRent" Text="*" 
                            ErrorMessage="Contract Required">
</asp:RequiredFieldValidator>

我只是运气不好,不得不编写自己的验证代码吗?

您可能希望在代码"front"中未声明"type"。您可以在隐藏的代码中设置它(可能在Page_InitPage_Load中):

this.Contract.Attributes.Add("type", "tel");

如果您安装了Microsoft.NET Framework 4 可靠性更新 1 (KB2533523),则TextBox接受新的 html5 输入类型(您也需要它,以便UpdatePanel在回发时识别它们)。

或者,您可以在自己的控件中继承HtmlInputText(任何 .net 版本 - 任何输入类型):

[ToolboxData("<{0}:Input runat='server' />"), Themeable(true)]
public sealed class Input: HtmlInputText { }

如果您使用的是 C#

Contract.Attributes["type"]="tel"

为 html 输入编写内联类型可能会在 .net 中产生分析错误。 因此,请在PageLoad()中添加上述代码行

您可以使用确保提交按钮具有与必需字段验证程序相同的验证组属性值

最新更新