2017-04-10 25 views
1

我是前端開發者,沒有C#的進一步知識,所以請原諒我可能愚蠢的問題。我目前正在嘗試使用jQuery UI對話框來替換常見的JavaScript alert()和confirm()框。到目前爲止,這在前端運行良好,但是現在我在其中一個C#頁面中找到了此代碼段,我不知道將confirm()切換到jQuery dialog()的最佳方式是什麼。有任何想法嗎?如何使用jQuery對話框()而不是從C#代碼中的confirm()?

string delCode = "javascript:" 
    + "if (confirm(\'Are you sure you wish to delete this?\')){ " 
    + this.Page.ClientScript.GetPostBackEventReference(this, string.Empty) 
    + ";} else { return false; }"; 

編輯: 張望了一下後打我越發現,它不會不添加的OnClientClick屬性,以防止回傳點擊按鈕時工作。如何在後面的代碼中添加此屬性? btnDelete.Attributes.Add(「OnClientClick」,「foo」); 不適用於我。什麼是解決這個問題的正確方法?

這裏IST是我想擁有的,它只是簡單的JS到目前爲止,(你看到的C#代碼段的按鈕,在小提琴的HTML內容的上述評論): https://jsfiddle.net/SchweizerSchoggi/xts01hrx/16/

+0

是.aspx還是.cshtml?確定它是Web-Forms還是MVC/Web-Api。 – Greg

+0

在JavaScript變量中存儲'this.Page.ClientScript.GetPostBackEventReference(this,string.Empty)'的存儲輸出並執行您在其他地方所做的同樣的事情 – charlietfl

+0

@Greg,它的.aspx – SchweizerSchoggi

回答

1

可悲的是,推的JavaScript從Web-Form的服務器到客戶端,您需要利用您必須實現的當前代碼。通常,爲了避免過多的回發問題,我會強制服務器端控件,如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> 

這樣,它將更像傳統的JavaScript在網頁或單頁應用程序。基於上述代碼的正式文檔,這是正確的額外功能可以找到here。與上面的指示,你唯一的選擇動態地添加:

ClientScript.RegisterOnSubmitStatement(this.GetType(), "ConfirmSubmit", jQuery); 

只需將progmatically創建按鈕或發現在頁面的按鈕,從後面的代碼。我將使用創建,向您展示我的意思:

public void Page_Load(...) 
{ 
    var lb = new LinkButton(); 
    lb.OnClientClick = "launch();" 
} 
+0

好的,我明白了。所以我會去嘗試一下 - 至少對於我們前端的人來說,這可能也是一種「更好的可讀性」;-) Thx Greg,以正確的方式推動我! – SchweizerSchoggi

+1

@SchweizerSchoggi對,前端最好做到這一點。否則,你將會失配並且躲開前端和後端狀態。這將試圖爲你分開一點。 Web-Forms在JavaScript上相當粗糙,除非你想使用很多CSS類,'ClientIdMode =「static」'也會成爲你的朋友。 – Greg

+0

如何從代碼隱藏內添加OnClientClick屬性? Attribute.Add(「OnClientClick」,「foo」)不適用於我.. 我需要這樣解決它,否則我將不得不改變大量的文件。 – SchweizerSchoggi

相關問題