如何从控制器中的动作方法调用jquery函数?

时间:2011-06-30 07:14:20

标签: jquery asp.net-mvc-3

我需要从控制器中的操作方法打开弹出窗口。动作方法基本上是注册用户。

[HttpPost]
public ActionResult Register(RegisterModel model)
{
    if (ModelState.IsValid)
    {            
        MembershipCreateStatus createStatus;
        Membership.CreateUser(model.UserName, model.Password, model.Email, null, null, true, null, out createStatus);

        if (createStatus == MembershipCreateStatus.Success)
        {
            FormsAuthentication.SetAuthCookie(model.UserName, false /* createPersistentCookie */);
            //------------------------------------------
            //I need to call a jquery function from here
            //------------------------------------------
            return RedirectToAction("Index", "Home");
        }
        else
        {
            ModelState.AddModelError("", ErrorCodeToString(createStatus));
        }
    }

    return View(model);
}

视图中出现的jquery函数只会创建一个隐藏的DIV,可见,并设置不透明度等,以表示弹出窗口。

我需要从上面显示的控制器的action方法中调用这样的jquery函数。

2 个答案:

答案 0 :(得分:2)

您无法从服务器调用客户端脚本。但是,您可以在服务器端设置客户端可以查看的指标,以确定其操作。

我会在名为ShowModalPopup的模型中设置一个bool,当createStatus == MembershipCreateStatus.Success时,将该bool设置为true。

现在,在您的观点中,写出指标:

@Html.HiddenFor(model => model.ShowModalPopup, new { id = "_showModalPopup" }) //add the id attribute for added performace

并在你的jquery中:

$(document).ready(function()
{
    if($('#_showModalPopup').val() == 'true')
    {
        //call your jquery modal popup method
    }
});

答案 1 :(得分:0)

我不是dotnet技术的专家。 在我看来,服务器端脚本和客户端脚本应该是分开的。

因为javascript jquery是客户端而dotnet是服务器端。

服务器将处理请求并处理服务器脚本然后将输出发送到用户浏览器,然后只有jquery函数发生在用户端。

基本上对于需要在客户端浏览器执行的任何内容,我会将它们全部放在视图中(html)。  他们可能需要使用脚本标记在html中运行jquery和javascript。

<script type="text/javascript">
    jQuery(function(){
        //call your function here
    });
</script>

我不确定我是否在帮助或者我不理解这个问题。对不起