2013-02-07 17 views
0

我有我使用剃刀V2作爲視圖與C#和Web Forms框架的工作引擎,它通過使用noty JavaScript的插件創建的通知javascript函數,如何調用從C#在剃刀V2 javascript函數

<script type="text/javascript"> 
    function generateAnoty(message) { 
     var noty_id = noty({ 
      layout: 'center', 
      text: message, 
      modal: true, 
      type: 'success', 
     }); 
    } 
    </script> 

不是mvc。 提交表單後,我想調用上面的JavaScript函數。 這是我正在嘗試做的一個例子;

//place for c# 
    if (IsPost) 
    { 
     //after submitting the form 
     //I wanna somehow call the js to show noty message 
     generateAnoty("You have successfully submitted the form!") 
    } 

p.s.如果我嘗試通過使用任何html按鈕onclick eventhandler來調用generateAnoty(message)js方法,它會很好地工作。

回答

0

取決於你如何提交表單,你可以做到這一點..

@using (Ajax.BeginForm("Results", new AjaxOptions { UpdateTargetId="Results", OnBegin="ShowLoading", OnComplete="generateAnoty", OnFailure="Error" })) 
{ 
    // Code here 
} 

注意:您要更換的取決於你有你的表格上有什麼某些事情的名稱。在這個例子中,我有一個函數,顯示一個加載圖像OnBegin和OnComplete,你可以讓它消失,或者顯示消息,無論你想要什麼。只需更換你需要的東西,它就能解決問題。

0

要添加在回發後運行的腳本,您可以使用ScriptManager.RegisterStartupScriptPage.ClientScriptManager.RegisterStartupScript方法。

使用ScriptManager.RegisterStartupScript如果您的web窗體內部框架使用UpdatePanel,否則使用Page.ClientScriptManager.RegisterStartupScript方法。

爲的RegisterStartupScript

由於某種統一的解決方案,你可以使用下面的擴展方法:

public static void RegisterStartupScript(this Page page, string scriptText) 
{ 
    var scriptManager = ScriptManager.GetCurrent(page); 
    if (scriptManager != null && scriptManager.IsInAsyncPostBack) 
     ScriptManager.RegisterStartupScript(page, page.GetType(), Guid.NewGuid().ToString(), scriptText, true); 
    else 
     page.ClientScript.RegisterStartupScript(page.GetType(), Guid.NewGuid().ToString(), scriptText, true); 
} 
+0

Page.ClientScriptManager.RegisterStartupScript是System.Web.UI.Page類的一部分。然而我的Page對象從WebPageBase.Page衍生因爲我使用Razor視圖引擎。所以當我嘗試使用你的方法時,我得到這個錯誤: 'WebUtils.RegisterStartupScript(System.Web.UI.Page,string)'的最好的重載方法匹配有一些無效的參數。 當我嘗試在剃刀中投下頁面對象時,出現此錯誤: 無法將類型「System.Dynamic.DynamicObject」轉換爲「System.Web.UI.Page」 因此,我想知道是否存在在Razor視圖引擎中使用RegisterStartupScript方法的一種方法。 – bilmuhfk

+0

@bilmuhfk您正在寫作「我使用剃鬚刀v2作爲視圖引擎與C#和web窗體框架工作不mvc」。我明白這一點,你有一個指向.aspx頁面的框架標籤,你想在.aspx頁面處理回發後執行腳本。如果情況並非如此,那麼我的答案對你沒有任何問題。 –

+0

我有.cshtml頁面不是那些.aspx所以你說我的情況是不同的。不過謝謝你的回覆。 – bilmuhfk