我是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);
}发布于 2015-04-21 06:56:35
这不是一个好的实践.
您应该避免混淆控制器代码中的javascript,这正是MVC构建的目的。分离关注点。
你能做什么?传递要在ViewBag或ViewData中显示的消息。在视图端的脚本标记中接收此消息(将其存储在javascript变量中)。检查消息是否为非空消息,显示为警报状态。
View.cshtml
<script>
var msg='@ViewBag.Message';
if(msg && msg.length>0)
alert(msg);
</script>发布于 2015-04-21 06:55:45
你有两种选择。
选项#1
使用jquery调用调用控制器方法,然后在成功方法中,您可以启动js方法。
选项2
在cshtml页面的document.ready事件中,您可以这样做
$.document.ready(function(){
var msg = '@ViewBag.Message'
if(msg != undefined && msg !== "")
alert(msg);
});https://stackoverflow.com/questions/29764814
复制相似问题