URL只是没有显示我想要的内容

时间:2010-12-14 00:20:00

标签: c# asp.net-mvc url asp.net-mvc-3

  

可能重复:
  How can I accomplish this type of URL in ASP.Net MVC2?

我想创建HTML链接,如:

/Auctions/Clothes
/Auctions/Electronics
/Auctions/Real Estate

以下是我构建链接的方式:

<li>@Html.ActionLink("Ropa", "Index", "Anuncios", new { category = "Ropa" }, new { })</li>
<li>@Html.ActionLink("Libros", "Index", "Anuncios", new { category = "Libros" }, new { })</li>

问题是链接的使用方式如下:

http://localhost:8589/Anuncios?category=Libros

我希望我的网址看起来很漂亮,因此我希望上面的内容如下:

/Anuncios/Libros

有关如何解决此问题的任何建议?这是ActionResult方法,为了澄清,这正是我想要它做的。它有效,除了URL太可怕了。

public ActionResult Index(string category)
{            
    AuctionRepository auctionRepo = new AuctionRepository();
    var auctions = auctionRepo.FindAllAuctions().Where(a => a.Subcategory.Category.Name == category);
    return View(auctions);
}

2 个答案:

答案 0 :(得分:0)

请查看此问题以实现您的要求。

修改

创建一个新的HTML帮助器,您将用它来呈现这样的菜单

public static class MyMenuHelper {
    public static string MyMenu(this HtmlHelper helper) {
        List<Category> categories = GetCategories();
        foreach ( Category c in categories ) {
            helper.RouteLink( c.Name, "AuctionCategoryDetails", new { categoryName = c.Name } );
        }
    }
}

最后在你的_Layout页面中使用它

@Html.MyMenu

答案 1 :(得分:-1)

您需要添加一些路由,以便MVC知道您希望链接看起来如何。它不像它可以读你的想法,或煮咖啡。

public static void RegisterRoutes(RouteCollection routes)
{
    routes.MapRoute(
        "Anuncios",                 // Route name
        "Anuncios/{category}",      // URL with parameters
        new { category = "Index" }  // Parameter defaults
    );
}