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