'number'不是输入标记的有效类型 - 仅在我的本地计算机上

时间:2017-11-21 09:36:17

标签: asp.net html5 iis webforms

我正在尝试处理已经存在的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更改,因为这已经在其他地方工作了。

我的机器上缺少什么?

8 个答案:

答案 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 - enter image description here

请访问此讨论

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"可能会产生解析器错误