如何从MVC 4中的控制器调用JavaScript函数?

时间:2015-04-21 06:46:03

标签: javascript asp.net-mvc-4 c#-4.0

我是MVC的新手,所以请忽略我的错误。我想从控制器调用一个JavaScript函数,我试着自己搜索调用JavaScript函数,但没有找到任何合理的解决方案。请帮忙 这是我的代码。

 [AllowAnonymous]
    public ActionResult Index()
    {
        LogisticQuote lq = new LogisticQuote();
        if (Request.QueryString["token"] != null)
        {
            byte[] byteArray = Convert.FromBase64String(Request.QueryString["token"]);
            string values = System.Text.Encoding.UTF8.GetString(byteArray);
            EdgeMoveService serivice = new EdgeMoveService();
            Edge.Move.Common.Status.ServiceStatus serviceStatus = serivice.GetLogisticQuote(values.Split('&')[1].Split('=')[1], String.Empty, new TenantId(values.Split('&')[0].Split('=')[1]), "", 1, 1, new SaveId(values.Split('&')[2].Split('=')[1]), out lq);
            if (serviceStatus.IsOkay)
            {
                TimeSpan difference = (DateTime.Now.Subtract(lq.CreatedTimeStamp));
                if (difference.TotalHours <= 24)
                {
                    if (!lq.IsExpire)
                    {
                        return View("QuoteDetails", lq);
                    }
                    else
                    {
                        ViewBag.Message = "alertError('" + String.Empty + "');";
                        return View("ExpireLinkNotification", lq);
                    }
                }
                else
                {
                    return View("ExpireLinkNotification", lq);
                }
            }
        }
        return View("Startup", lq);
    }

2 个答案:

答案 0 :(得分:1)

这不是一个好习惯。

你应该避免在控制器代码中弄乱javascript,这就是MVC的构建目的。分离关注点。

你能做什么? 传递要在ViewBag或ViewData中显示的消息。 在视图端的脚本标记中接收此消息(将其存储在javascript变量中)。 检查消息是否为非空显示在警报中。

View.cshtml

<script>
var msg='@ViewBag.Message';
if(msg && msg.length>0)
  alert(msg);
</script>

答案 1 :(得分:0)

你有两种选择。

选项#1

使用jquery ajax调用调用控制器方法,然后在success方法中激活你的js方法。

选项#2

在cshtml页面的document.ready事件中,您可以这样做

$.document.ready(function(){
   var msg = '@ViewBag.Message'
   if(msg != undefined && msg !== "")
       alert(msg);
});