我有以下javascript:
<script type="text/javascript">
function showjQueryDialog() {
$("#dialog").dialog("open");
}
$(document).ready(function() {
$("#dialog").dialog({
autoOpen: false,
modal: true,
buttons: { "Renew Membership": function() { $(this).dialog("close"); } }
});
});
</script>
我在页面上有一个asp:按钮,用于记录用户。这是在服务器端单击按钮时我想要发生的示例:
protected void LoginButton_OnClick(object sender, EventArgs e)
{
UserProfile profile = UserProfile.GetUserProfile(txtUserName.Text);
TimeSpan ts = profile.Expiration.Subtract(DateTime.Now);
if(ts.Days <= 30)
//call showJQueryDialog() to open the dialog box
Page.ClientScript.RegisterStartupScript(typeof(Login2), "showjquery",
"showJQueryDialog();", true);
else
//log the user in as normal.
}
此外,我如何将对话框中的更新按钮附加如下方法
public void Renew()
{
Response.Redirect("Renew.aspx");
}
答案 0 :(得分:3)
if(ts.Days <= 30)
ScriptManager.RegisterStartupScript(
typeof(MyPage), "showjquery",
"$(document).ready(function() { showJQueryDialog(); };",
true
)
else
//log the user in as normal.
将其放在您拥有的位置://调用showJQueryDialog()打开对话框
更新1:您似乎在使用更新面板,在这种情况下您需要使用ScriptManager.RegisterStartupScript
更新2:您还希望在jquery .ready调用中包装js调用,因此在配置对话框之前不会触发它。这比连接正文onload更好,因为onload会等待加载图像。所以.ready会更快显示(取决于图像和其他信息加载)。
答案 1 :(得分:3)
由于无法调用客户端功能,我建议在javascript中发出决策所需的信息,并在客户端进行所有操作。
或者,您可以根据之前的评论者的建议进行页面重新加载。
答案 2 :(得分:1)
我会保留一个隐藏的LinkButton,然后在javascript中调用__doPostBack方法。
<asp:LinkButton runat="server" ID="Renew" OnClick="Renew_Click" style="display:none" />
<强>的jQuery 强>
$(document).ready(function() {
$("#dialog").dialog({
autoOpen: false,
modal: true,
buttons: { "Renew Membership": function() {
$(this).dialog("close");
__doPostBack('Renew', '');
// or if inside a master page something like this
__doPostBack('ctl00$ContentPlaceHolder1$Renew', '');
} }
});
});
答案 3 :(得分:1)
我真的不明白弗雷迪对此的态度。我误解了一些可能的东西。就像我看到的那样,这里只有两种可能,正如devdimi指出的那样。之一:
a)在客户端onClick javascript中执行所有逻辑。您可以调用一个AJAX方法在服务器端OnClick中执行操作,然后在AJAX回调中调用您的jQuery弹出窗口。
b)做回发,处理服务器端OnClick,然后为正在运行的onLoad事件中的页面附加javascript:body.Attributes.Add(“onLoad”,“showJQueryDialog();”)
答案 4 :(得分:0)
我对IE8有一些类似的问题。
我们正在使用ASP.NET,并且只要我们在PageLoad / Control-Events IE8中执行Response.Redirect,就会将所有基本DOM对象设置为undefined(图像,窗口,文档) 但是如果我们在PreInit事件期间进行重定向,那么IE8就可以了。可爱的