【发布时间】:2020-06-10 19:21:49
【问题描述】:
我有一个 ASP.NET WebForms 应用程序,我在 VB.NET 中使用 Response.Write 生成一些 HTML 代码。但是我想添加一些验证码:
' add jQuery validator for mandatory fields
Response.Write("<script type='text/javascript'>")
Response.Write("mandatoryAdditionalFieldRules = Object.assign(mandatoryAdditionalFieldRules, {")
Dim mandatoryAdditionalFieldsStrings As New List(Of String)
For Each q As String In MandatoryAdditionalFields
mandatoryAdditionalFieldsStrings.Add(q & ": {required: true}")
Next
Response.Write(String.Join(", ", mandatoryAdditionalFieldsStrings))
Response.Write("});")
Response.Write("</script>")
这是一个由 JavaScript 函数读取的字段列表,以确保所有这些字段都已填写:
jQuery("#formEdit").validate({
rules: Object.assign({
InitialDate: {
required: true,
date: true
},
}, mandatoryAdditionalFieldRules),
messages: {
InitialDate: "Enter the Initial Date",
}});
我的问题是这个脚本没有在我的浏览器的输出 HTML 中呈现,因此 JavaScript 代码不知道验证必填字段。我逐步浏览了 VB.NET 代码,并看到了它的调用位置。为什么当我调用Response.Write 写出来时,JavaScript 不会出现在我的浏览器中?正在呈现包含此代码的页面的其他内容。只是我添加的 JavaScript 没有呈现。
编辑:这可能与此页面是通过 AJAX 调用加载的事实有关吗?
jQuery('#ClientCareVisitationContactTypeAdditionalFields').load('../AdditionalField/AdditionalFieldDisplayHTMLContactType.aspx', {...}, function(responseTxt, statusTxt, xhr){
if(statusTxt == "success"){
// do stuff
};
if(statusTxt == "error")
alert("Error: " + xhr.status + ": " + xhr.statusText);
});
【问题讨论】:
-
Response.Write 通常是在 ASP.NET 中做事的错误方式。 Inject Javascript from asp.net code behind files 显示了预期的方式。
-
我也试过
ClientScript.RegisterStartupScript,但脚本仍然没有出现在页面上。 -
您使用哪个事件处理程序来添加脚本(例如 .Load 或 .Init 或 ...)?
-
框架如何输出到页面与 jQuery Validate 插件无关。编辑的标签。谢谢。
-
@AndrewMorton 它不在任何事件处理程序中;它只是一个 VB.NET 脚本,在
<% %>标签中的页面上运行。
标签: jquery html asp.net vb.net webforms