【发布时间】:2020-04-15 11:07:21
【问题描述】:
所以我想让我的网址看起来像这样:
example.com、example.com/contact、example.com/sign-up、example.com/account
而不是看起来像这样的默认 MVC 方式:
example.com、example.com/Home/Contact、example.com/Account/SignUp、example.com/Account/Account
所有HomeController 视图都可以正常工作,但我的AccountController 不行。
当转到example.com/account 时,我收到一条错误消息:
找不到资源。
这是我的RouteConfig:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.LowercaseUrls = true;
routes.MapRoute(
name: "Default",
url: "{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Account",
url: "{action}/{id}",
defaults: new { controller = "Account", action = "Account", id = UrlParameter.Optional }
);
}
因为我想将Account/SignUp 视图显示为/sign-up,所以我在AccountController 中添加了一些自定义代码。
// GET: Account
public ActionResult Account()
{
return View();
}
// GET: Sign Up
[ActionName("Sign-Up")]
public ActionResult SignUp()
{
return View("SignUp");
}
/account 或 /account/account 两种格式都会给我与之前相同的错误。
但是/about、/contact 等没有。
感谢任何帮助,谢谢!
P.S 这是我的文件夹结构:
> Views
-> Account
--> Account.cshtml
--> SignUp.cshtml
-> Home
--> About.cshtml
--> Contact.cshtml
--> Index.cshtml
【问题讨论】:
-
你有没有试过把你的路线改成这样的? url: "/Account/{action}/{id}",
-
@LukeAlderton 成功了!
标签: c# asp.net-mvc asp.net-mvc-routing