如何从Razor视图重定向响应?

时间:2019-05-16 17:35:59

标签: c# asp.net-core

您好,我想使用剃刀视图从_layout.htmlcs重定向到页面。...

我已经尝试了很多方法来做出响应。重定向工作但失败了...

<div class="navbar-collapse collapse ">
  <ul class="navbar-nav flex-grow-1">
    @if (User.Identity.IsAuthenticated){
      @if (User.IsInRole("Admin")){
        Response.Redirect("~/Pages/Admin/AddAccount");
      }
      if (User.IsInRole("User")){

Respnse.redirect可能正常工作,或者必须使用其alter native ...

2 个答案:

答案 0 :(得分:2)

视图仅用于呈现页面。据推测,如果您要执行此步骤,则已经确定这是您要呈现的页面。

如果要重定向,则将从控制器方法中返回RedirectResult而不是ViewResult。有些方法可以返回RedirectResult,例如

Redirect(someUrl);
RedirectToAction(actionName, controllerName)

...以及其他,以及这些的重载。

我建议使用RedirectToAction,因为即使您输入的值有误也可以编译,但Visual Studio至少可以直观地表明您所引用的控制器和操作存在。

无论您要在视图中检查哪些条件以确定是否要重定向,都只需在控制器中进行检查即可。

答案 1 :(得分:1)

使用<a asp-page="/Admin/AddAccount">Add Account</a>