我对.net的经验有限.我的应用程序抛出一个错误this.dateTimeFormat是未定义的,我追踪到一个已知的ajax错误.发布的解决方法说:
"将以下内容注册为启动脚本:"
Sys.CultureInfo.prototype._getAbbrMonthIndex = function(value)
{
if (!this._upperAbbrMonths) {
this._upperAbbrMonths = this._toUpperArray(this.dateTimeFormat.AbbreviatedMonthNames);
}
return Array.indexOf(this._upperAbbrMonths, this._toUpper(value));
};
Run Code Online (Sandbox Code Playgroud)
那我该怎么做?我是否将脚本添加到我的aspx文件的底部?
我正在创建一个自定义服务器控件来为我的Web窗体应用程序生成带有特定标记和JavaScript处理程序的按钮元素.当然,它们能够导致回发,因此我希望它们能够与ASP的任何验证控件一起使用,以进行表单验证,尤其是客户端框架.
此按钮服务器控件支持使用提供的代码在按钮标记中OnClientClick
发出onclick
属性的属性(主要用于当用户单击列表视图的删除按钮或类似时的简单确认重新提示),因此使用asp:Button
控件的方法发出验证脚本作为onclick属性将非常无效.事实上,在标准上指定两者OnClientClick
和ValidationGroup
属性asp:Button
结果非常糟糕.这是一个非常明显的例子,说明为什么不能开箱即用:
页面标记
<asp:Button ID="btnSaveAsp" ValidationGroup="vgMyValidationGroup" OnClientClick="return true;" runat="server" />
Run Code Online (Sandbox Code Playgroud)
呈现标记
<input type="submit" name="ctl00$cphBodyContent$lvMyList$ctrl0$btnSaveAsp" value="Save" id="cphBodyContent_lvUsers_btnSaveAsp_0"
onclick='return true; WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$cphBodyContent$lvMyList$ctrl0$btnSaveAsp", "", true, "vgMyValidationGroup", "", false, false))'>
Run Code Online (Sandbox Code Playgroud)
以下是现有的非工作代码,用于通过验证对控件进行连接.除了发出类似的onclick
属性之外,我无法找到关于如何使用方法实现此目的的更多文档.我认为我Page.ClientSCript.RegisterForEventValidation
在重写AddAttributesToRender
方法中的调用将连接客户端验证,但这似乎没有像我假设的那样起作用.如有必要,jQuery可用于绑定对按钮的click事件的附加处理:
自定义服务器按钮控件
<ToolboxData("<{0}:Button runat=server></{0}:Button>")> _
<ParseChildren(False)> _
<PersistChildren(True)> _
Public Class Button
Inherits System.Web.UI.WebControls.WebControl
Implements IPostBackDataHandler
Public Sub New()
MyBase.New(HtmlTextWriterTag.Button)
End Sub
<Category("Behavior")> _
<DefaultValue("")> _
Public Overridable Property PostBackUrl As String
Get
Return If(ViewState("PostBackUrl"), String.Empty) …
Run Code Online (Sandbox Code Playgroud) asp.net validation webforms custom-server-controls clientscriptmanager