asp.net – 具有html5中的文本以外的输入类型的UpdatePanel
|
我正在开发一个使用ASP.NET渲染
HTML5的开源项目.在这里你可以看看:
现在我在更新面板中出现了一个问题,用于发布具有“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 – System.Web.HttpException:请求超时
- asp.net – User.GetUserId()在控制器的构造函数内失败
- asp.net文件下载 – 跟踪下载的大小
- asp.net-web-api – Asp.net Web Api的基本项目模板?
- asp.net – 使用Windows凭据和.net 4.5 WIF的RequestSecuri
- asp.net-mvc – 我在哪里可以初始化Orchard模块中的AutoMap
- 悟透JavaScript
- asp.net – IIS web部署 – 创建虚拟目录?
- .net – 如何获得程序集最后修改日期?
- asp.net – 如何在没有实体框架的MVC中使用SimpleMembershi
