繁体   English   中英

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

[英]How to call a JavaScript function from controller in MVC 4?

我是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,这就是构建MVC的目的。 关注点分离。

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

View.cshtml

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

您有两种选择可以做到这一点。

选项1

通过使用jquery ajax调用来调用controller方法,然后在成功方法中可以触发js方法。

选项#2

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM