我是asp.net网络应用程序的新手,我试图绘制自己的网址并遇到一些问题。 我有以下代码
//controller
public class CuisineController : Controller
{
//
// GET: /Cuisine/
public ActionResult Search()
{
return Content("Cuisine");
}
//Global.asax.cs
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathinfo}");
routes.MapRoute(
"Cuisine",
"Cuisine/{name}",
new { controller = "Cuisine", action = "Search", name = UrlParameter.Optional }
);
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", aciton = "Index", id = UrlParameter.Optional}
);
}
}
我知道这是非常基本的代码,但每次我用url~ / cuisine / {name}运行它都会出现404错误?有人可以告诉我为什么吗?谢谢!
答案 0 :(得分:1)
你的问题出现在这段代码中
routes.MapRoute(
"Cuisine",
"Cuisine/{name}",
new { controller = "Cuisine", action = "Search", name = UrlParameter.Optional }
);
具体来说,你正在传递这一行
action = "Search",
这一行没有任何意义
"Cuisine/{name}",
为了使其正常工作,您需要实现{action}参数,或者只是将它们全部删除。
之所以这样,是因为您声明您的网址看起来像Cuisine / {name},这意味着您将传递一个名为name的参数,并带有任何值。但是在您的新语句中,您将包含另一个名为action的参数,ASP无法理解该参数,因为您没有声明它是url的一部分。因此,ASP会查找Cuisine / {action} / {name},当您传入Cuisine / {name}时,它将无法理解该怎么做。