asp.net控制器没有返回内容(asp.net - MVC)

时间:2014-09-18 01:01:50

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

我是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错误?有人可以告诉我为什么吗?谢谢!

1 个答案:

答案 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}时,它将无法理解该怎么做。