1

Как я могу перенаправить на ActionResult нормального контроллера с .cshtml страницы моего обзора?Как перенаправить с страницы cshtml AREA на ActionResult нормального контроллера, используя @ Url.Action?

У меня есть обычный экран входа для обычного пользователя/администратора. Таким образом, на основе результата json usertype будет возвращен тип пользователя. Итак, теперь я хочу перенаправить пользователя на основе типа пользователя.

Если пользователь обычный пользователь, то я могу перенаправить его с помощью "var redirectUrl = '@Url.Action("Index", "Home")';" и затем "window.location.href = redirectUrl;" Приведенный выше код работает отлично.

Но что делать в следующем случае? Если пользователь является администратором, то я хочу перенаправить его в «Index» ActionResult из «HomeController», который присутствует в области «Admin».

ответ

2

Перенаправление вне область использовать пустую строку для области:

@Url.Action("Index", "Home", new { area = "" }) 

Это вы по умолчанию обратно в HomeController за пределами зоны.

+0

@hutchnoid @ NightOwl888: Спасибо Наконец ниже синтаксис работает для меня. 'var adminHomePageUrl = '@ Url.Action (" Index "," Home ", new {area =" Admin "})';' –

1

Если я правильно понимаю, вам просто нужна условная логика по вашей ссылке.

@{ 
    var redirectUrl = Url.Action("Index", "Home", new { area = "" }) 

    if (this.User.IsInRole("Administrator")) 
    { 
     redirectUrl = Url.Action("Index", "Home", new { area = "Admin" }) 
    } 
} 

<script> 
    var redirectUrl = '@redirectUrl'; 
    window.location.href = redirectUrl; 
</script> 

Хотя, лучшей альтернативой может быть сделать свой собственный HTML helper extension method так что вы можете использовать логику в другом месте.

1

Наконец, синтаксис для меня работал.

var adminHomePageUrl = '@Url.Action("Index","Home", new { area = "Admin" })';