'System.Web.UI.WebControls.TextBoxMode'不包含'Date'的定义

时间:2014-04-10 08:58:11

标签: asp.net

错误讯息: ' System.Web.UI.WebControls.TextBoxMode'不包含'日期'的定义

代码:

<asp:TextBox ID="lastDate" runat="server" autocomplete="off" TextMode="Date" ></asp:TextBox>

                 <ajax:CalendarExtender ID="lastDate_CalendarExtender" runat="server" 
                     Enabled="True" TargetControlID="lastDate">

4 个答案:

答案 0 :(得分:13)

也许我加入2美分已经很晚了,但我认为这可能会对将来的某些人有所帮助。正如Rob所提到的,自.Net 4.5以来,您可以使用TextMode="Date"作为asp:TextBox,但浏览器支持可能会受到限制,因为这会在页面输出中将TextBox呈现为HTML5日期类型文本框。大多数现代浏览器在我撰写本文时都支持HTML5。

但是,如果这是你想要的,那么你的标记没有问题。

<asp:TextBox ID="lastDate" runat="server" autocomplete="off" TextMode="Date" />

如果在Visual Studio Visual Studio中看到此错误消息,则很可能是因为目标框架版本不正确。

更改Web.Config中的Target-Framework属性,如下所示,以消除此错误。

  

Web.Config&gt;配置&gt; system.web&gt;汇编

<compilation debug="true" defaultLanguage="C#" targetFramework="4.5" />

希望这有帮助

答案 1 :(得分:4)

检查以下MSDN Link

描述说asp文本框的Textmode属性只能设置为以下3个选项。

Password:如果要将文本框中的输入显示为点(密码类型),则可以选择此模式。

Single Line:用于将文本框保留为单行字段。

Multiline:用于将文本框设置为注释框,即具有多行......

我认为所有TextBoxMode值都适用于.net framework 4.0或更低版本,现在支持这三个值。

答案 2 :(得分:2)

.net 4.5支持,但浏览器支持部分

使用ASP.net 4.5,您可以将此属性与更多值一起使用,例如Date - 请参阅TextBoxMode的文档。但是,截至2014年9月,caniuse.com报告只有50%的用户可以正常使用它。如果您知道您定位的浏览器有支持,请删除CalendarExtender并将项目更改为目标.net 4.5。

在VS2012

中发布TextMode ='Date'时出现问题

此外,如果您使用预编译集发布,则需要选中“允许预编译的站点可更新”或者它将出错(至少在VS2012中 - 如果我找到解决方案,我会更新我的回答)。

回退到ASP.net组件来完成这项工作

但是,您可以使用ASP.net CompareValidatorCalendarExtender

<asp:TextBox ID="lastDate" runat="server" autocomplete="off" />
<ajax:CalendarExtender ID="lastDate_CalendarExtender" runat="server" 
    Enabled="True" TargetControlID="lastDate" />
<asp:CompareValidator ID="CompareValidator2" runat="server"
    ControlToValidate="txtDateDiscIssued"
    ErrorMessage="* invalid"
    Operator="DataTypeCheck"
    Type="Date" />

答案 3 :(得分:0)

绝对不是解决错误的方法,但是您可以通过添加html属性type而不是TextMode来避免该错误。

type="date"