2013-02-07 18 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