在 ASCX 上通过 JavaScript 通过 jQuery 调用 WebMethod,需要 Control 的值
2011-03-03
4767
我知道如何从普通页面使用 jQuery 对 WebMethod 进行 AJAX 调用,但我在从 UserControl (ASCX) 执行此操作时遇到了问题。目前我遇到的最大问题是用于访问 groupDropDown 控件的 JavaScript 不起作用。似乎由于这是托管在 DotNetNuke 中的 UserControl,因此获取 CLientID 的常用方法不起作用,因为它嵌套了 x 层。这是我所拥有的:
Javascript:
function validateEnrolledDate(src, args) {
var isValid;
var groupDropDown = document.getElementById('<%= ddlDealer.ClientID %>');
$.ajax({
type: "POST",
url: "ajaxservice.asmx/ValidateEnrolledDate",
data: "{orderDate: '" + args.Value + "', groupId: '" + groupId + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
async: false,
success: function (msg) {
alert(msg);
isValid = msg.d;
},
failure: function () {
alert("FAIL");
}
});
args.IsValid = isValid;
调用此 JavaScript 的验证器用户控件:
<asp:CustomValidator id="CustomValidator1" runat="server" ControlToValidate="rdiDate" ErrorMessage="Fail" OnServerValidate="CustomValidator1_ServerValidate" ValidationGroup="vgce" CssClass="validation" Display="Dynamic" Text="*" ClientValidationFunction="validateEnrolledDate" />
groupDropDown 我试图从中获取一个值:
<asp:DropDownList ID="ddlDealer" runat="server" CssClass="dropdownlist theDealer" TabIndex="3" AutoPostBack="true" OnSelectedIndexChanged="ddlDealers_Changed" />
WebMethod:
[WebMethod()]
private bool ValidateEnrolledDate(string orderDate, string groupId)
{
DateTime enrolledDate = new Service().GetEnrollmentDate(int.Parse(groupId));
if (DateTime.Parse(orderDate) >= enrolledDate)
{
return true;
}
else
{
return false;
}
}
简化时间: 这是测试 JS 代码:
function validateEnrolledDate(src, args) {
var isValid;
var selectedGroup = $("theDealer").val();
alert(selectedGroup);
}
我现在只引用一个文本框:
<asp:TextBox ID="dealerId" runat="server" CssClass="theDealer" />
文本框中的文本正在服务器端代码中设置,并且它在屏幕上可见。
警报消息为“未定义”,因此仍有一些事情发生,因此它没有获取该文本框的值...
1个回答
如果您在获取下拉列表的值时遇到问题,最简单的方法是为控件分配一个类。
<asp:DropDownList ID="ddlUsers" runat="server" CssClass="dropdownlist theUsers" TabIndex="5" AutoPostBack="true" OnSelectedIndexChanged="ddlUsers_SelectedIndexChanged" Enabled="false" />
然后在您的方法中。
var selectedUser = $("theUsers option:selected").val();
Mark Coleman
2011-03-03