索引ActionResult返回404

时间:2010-09-04 09:58:26

标签: c# asp.net-mvc-2

请在下面找到我的ActionResult指数:

public ActionResult Index(string SectionText)
{

    var products = from p in db.Products
                   where p.CategoryID == SectionText
                   //orderby gs.SortBy
                   select p;

    return View(products.ToList());
}

这会引发以下错误: -

  应用程序中的服务器错误。

     

无法找到资源。

     

描述:HTTP 404.资源   你正在寻找(或其中一个   依赖)可能已被删除,   它的名字改了,或者是   暂时不可用。请   查看以下网址并确保   拼写正确。

     

请求的网址:   /分段/子板-894 /

任何想法都会非常感激。这是使用内置vs Web服务器。

由于

1 个答案:

答案 0 :(得分:0)

您正在请求/Sections/daughterboards-894并且没有任何内容可以将此网址与Index操作相关联。如果您使用的是默认路由,则您的请求应如下所示:/sections/index/daughterboards-894

当然,这假设您有一条能够处理此URL的路由:

routes.MapRoute(
    "Default",
    "{controller}/{action}/{SectionText}",
    new { 
        controller = "Home", 
        action = "Index", 
        SectionText = UrlParameter.Optional 
    }
);

如果您想拥有/Sections/daughterboards-894/这样的网址,则需要为其设置一条特殊路线:

routes.MapRoute(
    "MySpecialUrl",
    "Sections/{SectionText}",
    new { 
        controller = "Sections", 
        action = "Index", 
        SectionText = UrlParameter.Optional 
    }
);

备注:作为旁注,我建议您将数据访问抽象到存储库中,而不是直接在控制器中访问它。这将使您的代码更容易进行单元测试。