[英]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.