如何在MVC4中设置我的默认视图以指向特定区域,控制器和操作?

时间:2013-01-11 15:40:53

标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-4 routes

我有一个用户区,在此我注册了以下内容:

context.MapRoute("DefaultRedirect",
    "",
    new { controller = "Account", action = "Login" }
);  

当我使用routeDebug时,它告诉我当我连接到我的网站www.xxx.com然后它将尝试呼叫

area = User, controller = Account, action = Login

当我直接使用:www.xxx.com/User/Account/Login连接时,我的登录页面会出现。

当我不使用routeDebug并连接到我的网站www.xxx.com时,我收到一条错误消息:

Server Error in '/' Application.

The resource cannot be found.

Description: HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable.  Please review the following URL and make sure that it is spelled correctly. 

Requested URL: /

这是我的控制器操作方法:

   public class AccountController : Controller
    {
        //
        // GET: /Account/Login

        [AllowAnonymous]
        public ActionResult Login()
        {
            ViewBag.ReturnUrl = "xx";
            return View("~/Areas/User/Views/Account/Login.cshtml");
        }

我很困惑,因为routeDebug似乎显示我要进入正确的控制器和动作但是当我不使用它并放置一个断点时,它似乎没有进入控制器动作。

2 个答案:

答案 0 :(得分:1)

如果此控制器位于同一区域内,我认为您可以使用

[AllowAnonymous]
    public ActionResult Login()
    {
        ViewBag.ReturnUrl = "xx";
        return View();
    }

如果您只使用不同区域的视图,则可以使用

return View("~/Views/YourArea/YourController/YourView.aspx");

答案 1 :(得分:0)

 return RedirectToAction("Login", "Account");

将重定向到特定控制器和特定操作。 如果帐户在文件夹中更深,则只需包含路径