大家好我想问一下如何从一个视图重定向到另一个视图.这是我的看法
@model IEnumerable<test.Models.contents>
@using test
@if(Request.IsAuthenticated) {
<text>Welcome<strong>@User.Identity.Name</strong>
</text>
}
else
{
???
}
Run Code Online (Sandbox Code Playgroud)
不要在视图中进行任何重定向.这不是它的责任.视图的职责是显示以视图模型的形式从控制器操作传递给它的数据.
在呈现此视图的控制器操作内重定向.例如,您可以使用[Authorize]属性来装饰它.这样,如果用户未获得授权,他将被重定向到您在web.config中指定的loginUrl:
[Authorize]
public ActionResult SomeAction()
{
return View();
}
Run Code Online (Sandbox Code Playgroud)
如果您想重定向到某个特定视图,您可以简单地编写一个自定义Authorize属性并覆盖该HandleUnauthorizedRequest方法,以指定您希望在未经过身份验证的情况下重定向到的控制器和操作:
public class MyAuthorizeAttribute : AuthorizeAttribute
{
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
var values = new RouteValueDictionary(new
{
controller = "SomeController",
action = "NotAuthorized"
});
filterContext.Result = new RedirectToRouteResult(values);
}
}
Run Code Online (Sandbox Code Playgroud)
然后用它装饰你的动作:
[MyAuthorize]
public ActionResult SomeAction()
{
return View();
}
Run Code Online (Sandbox Code Playgroud)
现在在相应的视图中,您不需要执行任何测试.保证如果您在渲染此视图时已对用户进行了身份验证,您可以直接欢迎他:
@model IEnumerable<test.Models.contents>
@using test
Welcome <strong>@User.Identity.Name</strong>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2507 次 |
| 最近记录: |