如何从MVC服务器端代码调用javascript子例程?

时间:2010-02-12 10:49:37

标签: c# .net asp.net asp.net-mvc asp.net-mvc-2

我知道你可以返回一个javascript视图,但这对我来说从来没有用过。

我无法找到关于这个概念的正确教程或解释,如果有人能够阐明它会很好(是的,我已经无数次尝试了谷歌)。

编辑:我已经使用了您的提示,调试器等。谢谢大家。哇!我只注意到一些东西,每次我尝试调用一个函数,无论什么函数,在javascript中,不知何故jQuery和ms ajax框架javascript捕获它并检查文档是否准备好(document.onready或其他)并且永远不会返回控件回到函数im调用!它为什么这样做?我从未要求过它!

我所拥有的只是在您的母版页顶部引用这些库,脚本/链接引用。

2 个答案:

答案 0 :(得分:1)

很简单:

1)为JavaScript调用创建一个View:

<强> HelloWorld.ascx

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
<script type="text/javascript">
    alert('Hello world !!!')
</script>

2)然后为此视图创建一个Action:

<强> MainController.cs

[ChildActionOnly]
public ActionResult HelloWorld()
{
    if (It_Is_Time_To_Call_HelloWorld_On_ClientSide)
    {
        return View();
    }

    return new EmptyResult();
}

3)在页面底部的某处为您的JavaScript调用操作添加RenderAction

<强>的Site.Master

    ...

    <% Html.RenderAction("HelloWorld", "Main"); %>
    </body>
</html>

希望这有帮助

答案 1 :(得分:1)

我从未遇到类似JQuery的问题,但出于测试目的,您可以尝试在视图中使用它:

$(document).ready(function() {
    alert("Here");
});

一种行动方法:

public void DoThis()
{
   return View();
}

只是为了测试代码的工作原理。没有什么特别的,必须在任何控制器中使用此警报和操作方法进行查看。

这有用吗?