我有一个jquery ui对话框,上面有一个单选按钮列表。当用户单击“确定”并且我需要传递所选值时,我需要调用服务器端方法。我尝试通过调用ajax方法并将所选值作为参数传递来实现。这很好用(值已通过)但我无法从方法访问cookie(得到错误 - 请求在此上下文中不可用),这是有意义的,这是一个ajax请求。这是代码:
$("#dialogReject").dialog({
autoOpen: false,
height: 300,
width: 350,
modal: true,
buttons: {
"Reject": function () {
var value = $(this).find('input:checked').val();
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "/myPage.aspx/RejectDocumentWM",
data: "{'rejectReason':'" + value + "'}",
dataType: "json",
success: function (data) {
alert('success');
},
error: function (result) { alert('error'); }
});
$(this).dialog('close');
},
Cancel: function () {
$(this).dialog("close");
}
}
});
RejectDocument():
[WebMethod]
public static void RejectDocumentWM(string rejectReason)
{
MyNamespace.myPage page = new MyNamespace.myPage();
page.RejectDocument(rejectReason);
}
protected void RejectDocument(string rejectReason)
{
batch batch = (batch)Session["Batch"];
if (client.RejectDocument(batch.GetCurrentDoc().icn, rejectReason, Request.Cookies["username"].Value)) //here is where I get the error
{
NextDocument();
}
}
我尝试将值放入隐藏字段然后调用按钮单击调用服务器端方法。我的问题是隐藏字段的值总是空白,即使它在客户端脚本中设置正确。这是代码:
$("#dialogReject").dialog({
autoOpen: false,
height: 300,
width: 350,
modal: true,
buttons: {
"Reject": function () {
var value = $(this).find('input:checked').val();
$('[id$="hdfRejectReason"]').val(value); //this sets properly
$('[id$="btnRejectDoc"]').click();
$(this).dialog('close');
},
Cancel: function () {
$(this).dialog("close");
}
}
protected void btnRejectDoc_Click(object sender, EventArgs e)
{
batch batch = (batch)Session["Batch"];
if (client.RejectDocument(batch.GetCurrentDoc().icn, hdfRejectReason.Value, Request.Cookies["username"].Value))
//hdfRejectReason.Value is blank
{
NextDocument();
}
}
对我有什么想法?我没办法。 谢谢!
答案 0 :(得分:1)
首先,这个hf是在'popup'还是'main page'部分?
第二,在stackoverflow中,我们讨论并设置了其他(更好的?)方法来在jQuery中设置隐藏字段值:
<div class="hfFoo-wrap">
<asp:HiddenField runat="server" ID="hfFoo" />
</div>
function FooBarFunction() {
var hfFoo = $('.hfFoo-wrap input[type=hidden]');
hfFoo.val('Bar');
var isBar = hfFoo.val();
}
也许在btnRejectDoc_Click中有其他'null'或'empty'参数?
第三:我首选FrameDialog与'aspx'页面和'回调委托'。