我正在尝试处理已经存在的Asp.Net/Web Forms项目。
这在视觉工作室中编译得很好但是当我在我的本地IIS下运行特定页面时,我得到了
'number'不是输入标记的有效类型。
在这行html:
<input type="number" ID="txtNum" runat="server" class="txt" step='0.01'
value='0.00' placeholder='0.00' min="0" />
有很多人抱怨同样的问题,但我看到的唯一解决方案是更新代码或HTML,这是我无法做到的,因为这可以在实时服务器和其他开发人员机器上运行。 / p>
更新(基于建议的重复)
我已经看过这个问题了:
How can I use HTML5 email input type with server-side .NET
它建议安装.net 4的更新 http://support.microsoft.com/kb/2468871。 我认为这台机器无论如何都是在2011年之后安装的,但无论如何更新都不会安装它说:
KB2468871v2不适用,或被计算机上的其他条件阻止。
我不知道这是否意味着已经安装了更新?
其他答案提示我无法做的代码/ html更改,因为这已经在其他地方工作了。
我的机器上缺少什么?
答案 0 :(得分:4)
这没有任何意义..但是受到这个答案的启发: https://stackoverflow.com/a/27561096/390501
我将Visual Studio中的目标框架更新为4.5.1而不是4.5,现在页面加载时没有解析器错误!
答案 1 :(得分:2)
使用此代码使用HTML5输入类型:
在.aspx文件中使用:
<input type="text" placeholder='0.00' ID="txtNum" runat="server" class="txt/>
在.cs文件中使用:
txtNum.Attributes["type"] = "number";
txtNum.Attributes["value"] = "0.00";
txtNum.Attributes["min"] = "0";
txtNum.Attributes["step"] = "0.01";
答案 2 :(得分:0)
检查您的浏览器是否支持HTML5。 如果它支持但仍未显示,则明确告诉浏览器您正在使用html5标记。
在.aspx文件中使用此功能。
<!DOCTYPE html>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
答案 3 :(得分:0)
发生此问题是因为您机器中安装的.net框架没有 System.Web.UI.HtmlControls.HtmlInputGenericControl 类。
此类定义服务器端访问HTML5输入元素的方法,属性和事件。 (参考 - MSDN)
自.Net 4.5起可用。
解决问题的步骤
<强> 1。确保服务器机器上有.Net 4.5框架。
<强> 2。确保解决方案中项目的目标框架指向.Net 4.5
第3。确保该网站在IIS中使用4.0应用程序池。
答案 4 :(得分:0)
检查此更新的先决条件
- 要应用此更新,必须安装.NET Framework 4或.NET Framework 4 Client Profile
- 要安装此更新,您必须安装Windows Installer 3.1或更高版本。要获取最新版本的Windows Installer,请访问以下Microsoft website
如果您的机器已具备先决条件
- 从Windows控制面板上的程序和功能运行Visual Studio产品维修
- 重新运行补丁,修补程序。
答案 5 :(得分:0)
从HTML 5 Updates for .NET 4安装Reliability Update 1 for the .NET应该启用.net框架来理解html5控件。
引用msdn;
VS 2010 SP1附带了第一个更新。你可以阅读有关 框架在这里更新:http://support.microsoft.com/kb/2468871。之一 HTML 5的功能是现在有新的输入类型,如日期, 网址,电子邮件等。虽然今天大多数浏览器都不支持这些新版本 输入类型你今天应该仍然使用它们,因为大多数移动 设备支持它们,它会更改这些设备的键盘 显示。例如,指定
type=”email”
将导致许多手机 在键盘上提供“@”
字符。type=”email”
或type=”url”
将导致许多手机提供键盘上的“.com”
按钮 捷径。在上述更新之前,在Web中使用这些输入类型是违法的 形式。以下将产生错误:
<asp:TextBox id=”TextBoxEmail” runat=”server” type=”email” />
因为我们正在验证可以为
type= attribute.
提供哪些值。此验证已作为上述更新的一部分放宽。
答案 6 :(得分:0)
在输入字段上使用runat="server"
时,主要问题是兼容性问题。如果您使用的dot.net框架低于4,那么您可能会遇到此问题。
删除runat="server"
并使用Request.Form("name")
调用服务器端的文本框。请将文本框作为html输入而不是使用runat="server"
Update for the .NET Framework 4: March, 2011 -
请访问此讨论
Render ASP.NET TextBox as HTML5 Input type "Number"
在ASP.NET Web窗体中使用HTML5输入类型
现在要点 - 如何在ASP.NET中使用新的输入类型?显然,您可以在Web表单中使用上面显示的原始标记,然后使用Request.Form
集合来访问单个值,但如果您正在开发基于Web表单的应用程序,则可能会使用服务器端控件(HTML服务器控件或Web服务器控件)而不是原始HTML标记。在这种情况下,您的文本框将采用以下任一形式:
<input id="Text1" type="text" runat="server" />
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
现在问题是VS2010默认安装没有考虑HTML5提供的新输入类型。因此,您无法在Web表单中使用新的输入类型。幸运的是,MSDN Download Center上有一个更新可以解决Web服务器控件的问题(但不适用于HTML服务器控件)。如果安装了此更新,则可以使用TextBox服务器控件,如下所示:
<asp:TextBox ID="TextBox1" runat="server" type="date"></asp:TextBox>
注意添加到<asp:TextBox>
标记的type属性。这样,您可以指定任何新的HTML5输入类型,并相应地呈现结果控件。您在服务器上访问TextBox服务器控件的方式保持不变。
答案 7 :(得分:0)
在vb.net
在.aspx
页中:
<input id="txtNum" runat="server"/>
在.vb
页的PageLoad()
中:
txtNum.Attributes.Add("type","number")
html输入中的 type="number"
可能会产生解析器错误