2015-04-21 100 views
0

我是MVC的新手,所以請忽略我的錯誤。我想從控制器調用JavaScript函數,我嘗試着自己並搜索調用JavaScript函數,但沒有找到任何合理的解決方案。請幫忙 這是我的代碼。如何在MVC 4中從控制器調用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); 
    } 

回答

0

你有兩個選擇來做到這一點。

選項#1

呼叫從使用jQuery Ajax調用,然後在成功的方法,你可以解僱你的JS方法控制方法。

選項#2

在你CSHTML頁面的document.ready事件,你可以這樣做

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

這是不是一個好的做法。

你應該避免在你的控制器代碼中搞亂javascript,那是什麼MVC的內置。關注點分離。

你能做什麼? 傳遞消息在ViewBag或ViewData中顯示。 在視圖側的腳本標記中接收此消息(將其存儲在JavaScript變量中)。 檢查消息是否爲非空,並將其顯示在警報中。

View.cshtml

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