Как создать простую целевую страницу в MVC2 - PullRequest
0 голосов
/ 07 ноября 2010

Я пытаюсь создать страницу http://domain.com/NotAuthorized.

перешел к Views\Shared и добавил представление с именем NotAuthorized, которое создает имя файла NotAuthorized.aspx

alt text

в своих Маршрутах я написал

routes.MapRoute(
    "NotAuthorized", // Route name
    "NotAuthorized.aspx"  // Route Url
);

, но каждый раз, когда я получаю доступ к http://domain.com/NotAuthorized, я получаю ошибку

Ресурс не может быть найден.

Чего мне не хватает?

Как получить доступ к этому, не используя View("NotAuthorized") в Controller, другими словами, не проходя через какой-либо контроллер.

Ответы [ 2 ]

1 голос
/ 07 ноября 2010

Вы не можете получить доступ к представлениям напрямую, не пройдя через контроллер.Все страницы в папке Views не могут обслуживаться напрямую.Таким образом, один из способов выполнить то, что вы ищете, это написать собственный атрибут [Authorize] и установить страницу ошибки:

protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
    if (!filterContext.HttpContext.User.Identity.IsAuthenticated)
    {
        base.HandleUnauthorizedRequest(filterContext);
    }
    else
    {
        filterContext.Result = new ViewResult { ViewName = "NotAuthorized" };
    }
}
0 голосов
/ 07 ноября 2010

Я до сих пор не знаю, как это сделать, но я использовал Home Controller и создал действие под названием NotAuthorized

public ActionResult NotAuthorized()
{
    return View();
}

и добавил маршрут типа

routes.MapRoute(
    "NotAuthorized", // Route name
    "NotAuthorized", // URL with parameters
    new { controller = "Home", action = "NotAuthorized" } // Parameter defaults
);

И теперь работает нормально, я могу легко перенаправить в любой части моей бизнес-логики на /Notauthorized, и это будет нормально работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...