Javascript 如何在C代码中使用jQuery dialog()而不是confirm()?
我是一名前端开发人员,对C#没有进一步的了解,所以请原谅我可能愚蠢的问题。我目前正在尝试使用jQuery UI对话框替换常见的JavaScript alert()和confirm()框。到目前为止,这在前端运行良好,但现在我在其中一个C#页面中找到了这段代码,我不知道从confirm()切换到jQuery dialog()的最佳方式是什么。有什么想法吗Javascript 如何在C代码中使用jQuery dialog()而不是confirm()?,javascript,c#,jquery,jquery-ui,jquery-ui-dialog,Javascript,C#,Jquery,Jquery Ui,Jquery Ui Dialog,我是一名前端开发人员,对C#没有进一步的了解,所以请原谅我可能愚蠢的问题。我目前正在尝试使用jQuery UI对话框替换常见的JavaScript alert()和confirm()框。到目前为止,这在前端运行良好,但现在我在其中一个C#页面中找到了这段代码,我不知道从confirm()切换到jQuery dialog()的最佳方式是什么。有什么想法吗 string delCode = "javascript:" + "if ( confirm(\'Are you sure you w
string delCode = "javascript:"
+ "if ( confirm(\'Are you sure you wish to delete this?\')){ "
+ this.Page.ClientScript.GetPostBackEventReference(this, string.Empty)
+ ";} else { return false; }";
编辑:
在玩了一段时间后,我发现如果不添加OnClientClick属性以防止单击按钮时回发,它将无法工作。如何从代码隐藏中添加此属性?
添加(“OnClientClick”、“foo”);
不适合我。解决这个问题的正确方法是什么
这就是我想要的,到目前为止,它只是简单的JS(你可以看到按钮的C#代码片段作为注释出现在Fiddle中HTML内容的上方):
遗憾的是,要在Web表单内部将JavaScript从服务器推送到客户端,您需要利用当前必须实现的代码。通常,为了避免过多的回发问题,我会强制服务器端控件(如
LinkButton
)禁用表单提交
<asp:LinkButton id="lbExample" runat="server" OnClientClick="launch(); return false;" Text="Launch Dialog" />
<script type="text/javascript">
function launch() {
$('[data-rel="Example-Modal"]').dialog({
// Dialog logic.
}
}
</script>
您只需以编程方式创建按钮,或者从代码隐藏中在页面中找到按钮。我将使用create,向您展示我的意思:
public void Page_Load(...)
{
var lb = new LinkButton();
lb.OnClientClick = "launch();"
}
是.aspx还是.cshtml?确定它是Web窗体还是MVC/Web-Api。在javascript变量中存储
this.Page.ClientScript.GetPostBackEventReference(this,string.Empty)
的输出,并执行与您相同的操作elsewhere@Greg,是.aspxc。你能发布更多的代码吗?比如下一条语句是什么?@Kris,这只是一行简单的代码:DeleteButton.Attributes.Add(“onclick”,delCode);好的,我明白了。所以我会尝试一下——至少这可能是一种“更好的可读性”“,至少对我们这些前端人员来说;-)格雷格先生,谢谢你用正确的方式推我@SchweizerSchoggi是的,对于前端来说,这样做更好。否则,将出现不匹配和hodge podge前端和后端状态。这将尝试为您分离一点。Web表单在JavaScript上非常粗糙,而且clientmode=“static”
也将是您的朋友,除非您想使用大量CSS类。如何从代码后面添加OnClientClick属性?Add(“OnClientClick”、“foo”)对我不起作用。。我需要用这种方法来解决这个问题,否则我将不得不更改大量文件。@SchweizerSchoggi也用这种方法更新了答案。请记住,在加载JavaScript之前,事件不会触发,因为它还没有准备好。或者,如果您不按顺序添加属性,它将不会附加到按钮,因此它必须位于Page_Load或之前。
public void Page_Load(...)
{
var lb = new LinkButton();
lb.OnClientClick = "launch();"
}