hjc*_*710 7 html c# asp.net-mvc-3
我有一个简单的MVC 3应用程序.我希望站点在用户注销并在注销页面上停留几秒后自动将用户重定向到其他位置.我希望将其实现到View中,但我无法弄清楚如何将MVC约定用于执行此操作.我知道我可以用这个:
<META HTTP-EQUIV="Refresh" CONTENT="5;URL=/Index">
Run Code Online (Sandbox Code Playgroud)
但这意味着我必须指定一个URL,[或者如果它只是/ Index它会将它附加到当前URL,这意味着它将调用Controller的Action(括号中的信息不正确)].唯一的问题是这是我的帐户控制器,我不想将它们(用户)重定向到其中一个操作.我希望它们重定向到我的Home控制器中的Action,最好是Index Action.我想这可以通过我的帐户控制器中的新Action完成,我链接到那里,Action所做的一切都重定向到新的View.但这似乎浪费了代码.我可以直接指定控制器和我想要的动作来执行此操作吗?
编辑:自己解决了.我所说的关于它的/当前URL的索引是错误的,我可以在那里指定Controller Action,用过:
<META HTTP-EQUIV="Refresh" CONTENT="5;URL=/Home/Index">
Run Code Online (Sandbox Code Playgroud)
到目前为止工作,我没有添加localhost信息.这给了我链接让我localhost:xxxxx/Home/Index困惑的是,如果你使用这个:
<META HTTP-EQUIV="Refresh" CONTENT="5;URL=~/Home/Index">
Run Code Online (Sandbox Code Playgroud)
链接变得localhost:xxxxx/Account/~/Home/Index非常奇怪,因为它添加~到URL链接,这通常只是意味着预先复制内容并附加到.然而,看起来~仍然存在仍然意味着事先复制内容并追加所有内容,我们也只是追加~这一次......链接的帐户部分就在那里,因为View是从Account控制器调用的并且在帐户控制器的"查看"文件夹.
Dar*_*rov 19
您可以使用Url.Action帮助程序,它将根据您的路由设置生成正确的URL.
剃刀的例子:
<META HTTP-EQUIV="Refresh" CONTENT="5;URL=@(Url.Action("Index", "Home"))">
Run Code Online (Sandbox Code Playgroud)
和WebForms:
<META HTTP-EQUIV="Refresh" CONTENT="5;URL=<%= Url.Action("Index", "Home") %>">
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用javascript来执行重定向而不是meta标记:
<script type="text/javascript">
window.setTimeout(function() {
window.location.href = '@Url.Action("Index", "Home")';
}, 5000);
</script>
Run Code Online (Sandbox Code Playgroud)