【问题标题】:How to call a JavaScript function from controller in MVC 4?如何从 MVC 4 中的控制器调用 JavaScript 函数?
【发布时间】:2015-04-21 06:46:03
【问题描述】:

我是 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);
    }

【问题讨论】:

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


    【解决方案1】:

    这不是一个好习惯。

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

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

    View.cshtml

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

    【讨论】:

      【解决方案2】:

      您有两种选择。

      选项#1

      使用 jquery ajax 调用来调用控制器方法,然后在成功方法中你可以触发你的 js 方法。

      选项 #2

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-04-12
        • 1970-01-01
        • 2017-08-22
        • 2013-06-22
        • 1970-01-01
        • 2017-07-25
        • 2013-07-18
        • 1970-01-01
        相关资源
        最近更新 更多