asp.net – 具有html5中的文本以外的输入类型的UpdatePanel
我正在开发一个使用ASP.NET渲染
HTML5的开源项目.在这里你可以看看:
http://asphtml5.codeplex.com/ 现在我在更新面板中出现了一个问题,用于发布具有“text”以外类型的输入值.你可能会知道,html 5已经引入了几个输入类型,例如’number’,’tel’,’search’等.现在如果我渲染这样的控件,一切都在正常情况下正常工作,但如果我把它们放在UpdatePanel,没有值将被发回,该值将被重置. 这里是一小段代码产生相同的错误: <asp:UpdatePanel runat="server" ID="UP"> <ContentTemplate> <p> Enter A Number: <asp:TextBox runat="server" ID="Number2" type="number" /> </p> <asp:Button Text="Submit" runat="server" ID="BtnSubmit" OnClick="BtnSubmit_Click" /> <p> You entered : <asp:Label Text="" ID="LblValue" runat="server" /> </p> </ContentTemplate> </asp:UpdatePanel> 如果您在支持html 5的浏览器上测试此代码,可以说Chrome作为示例,将显示“数字向上”字段.但是如果您单击提交按钮,它将丢失您输入的值. 这里是事件处理程序的代码: protected void BtnSubmit_Click(object sender,EventArgs e) { LblValue.Text = Number2.Text; } 我已经尝试过的是读取UpdatePanel,ScriptManager和ScriptManagerProxy类代码,没有发现. 我想我可能需要创建我自己的UpdatePanel和/或ScriptManager类才能使用. 有人可以帮我,告诉我哪里检查. 解决方法
有趣的是,ASP.NET 4.0 AJAX框架似乎知道HTML 5输入类型(见代码),但是@TimSchmelter指出,这被Microsoft证实为一个错误.
这可能会为您提供调试行为和/或覆盖默认行为并找到解决方案的起点. 这也可能是这些输入类型的服务器端处理代码的错误,尽管我不知道为什么他们应该/会关心异步回发与正常的回发. this._textTypes = /^(text|password|hidden|search|tel|url|email|number|range|color|datetime|date|month|week|time|datetime-local)$/i; function Sys$WebForms$PageRequestManager$_onFormSubmit(evt) { var i,l,continueSubmit = true,isCrossPost = this._isCrossPost; this._isCrossPost = false; if (this._onsubmit) { continueSubmit = this._onsubmit(); } if (continueSubmit) { for (i = 0,l = this._onSubmitStatements.length; i < l; i++) { if (!this._onSubmitStatements[i]()) { continueSubmit = false; break; } } } if (!continueSubmit) { if (evt) { evt.preventDefault(); } return; } var form = this._form; if (isCrossPost) { return; } if (this._activeDefaultButton && !this._activeDefaultButtonClicked) { this._onFormElementActive(this._activeDefaultButton,0); } if (!this._postBackSettings || !this._postBackSettings.async) { return; } var formBody = new Sys.StringBuilder(),count = form.elements.length,panelID = this._createPanelID(null,this._postBackSettings); formBody.append(panelID); for (i = 0; i < count; i++) { var element = form.elements[i]; var name = element.name; if (typeof(name) === "undefined" || (name === null) || (name.length === 0) || (name === this._scriptManagerID)) { continue; } var tagName = element.tagName.toUpperCase(); if (tagName === 'INPUT') { var type = element.type; if (this._textTypes.test(type) || ((type === 'checkbox' || type === 'radio') && element.checked)) { formBody.append(encodeURIComponent(name)); formBody.append('='); formBody.append(encodeURIComponent(element.value)); formBody.append('&'); } } else if (tagName === 'SELECT') { var optionCount = element.options.length; for (var j = 0; j < optionCount; j++) { var option = element.options[j]; if (option.selected) { formBody.append(encodeURIComponent(name)); formBody.append('='); formBody.append(encodeURIComponent(option.value)); formBody.append('&'); } } } else if (tagName === 'TEXTAREA') { formBody.append(encodeURIComponent(name)); formBody.append('='); formBody.append(encodeURIComponent(element.value)); formBody.append('&'); } } formBody.append("__ASYNCPOST=true&"); if (this._additionalInput) { formBody.append(this._additionalInput); this._additionalInput = null; } // truncated for length (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ASP.NET – 如何在User Control中使用Response.Redirect()?
- asp.net – IIS Express(WebMatrix)打开外部连接
- 包含模型列表的模型(MVC-3,Razor)
- asp.net – 服务器端包含的问题
- ASP.NET CodeFileBaseClass属性与从System.Web.UI.Page继承
- asp.net – 我如何验证日期?
- 如何在ASP.NET 5中添加一个TypeScript绝对类型的定义?
- asp.net – IIS 7:将所有请求重定向到Default.aspx
- 深蓝词库转换2.0发布——支持仓颉、注音、五笔、郑码、二笔
- 在ASP.NET中如何检测上传文件的MIME类型?
- asp.net – 在DataList ItemdataBound事件中,如何
- asp.net-mvc – 为什么我的Html帮助者没有智能感
- asp.net-core – 如何使用ASP.NET Core中的JWT授
- asp.net – 在双列表框中移动项目
- .NET Core的日志[5]:利用TraceSource写日志
- ASP.NET mvc:如何使用今天的日期自动填充日期字
- asp.net-mvc-4 – 部分视图中的Knockout MVC模型
- asp.net – 发布时母版页无法加载类型错误
- asp.net – 多个项目Visual Studio 2015 npm
- asp.net – 如何在HTML标记中阅读web.config APP