如何在ASP.Net MVC2中完成此类URL?

时间:2010-12-12 22:56:35

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

我有一个名为Categories的表。我希望用户从类别列表中单击,然后加载该类别中所有拍卖的列表。

很简单,对吧?

我可以为每个类别创建一个动作,例如:

public ActionResult Cellphones()
public ActionResult Electronics
public ActionResult Clothes
public ActionResult Cars
public ActionResult RealEstate

这将生成以下URL:/ Auctions / Clothes和/ Auctions / RealEstate。正是我在寻找的东西。

问题是这需要手动修补。当我添加一个类别时,我将不得不手动创建一个新动作,然后为它创建一个新视图。

有更好的方法吗?

2 个答案:

答案 0 :(得分:4)

创建一个ActionResult:

public class AuctionController : Controller
{
    public ActionResult AuctionCategoryDetails(string categoryName)
    {
        var model = repository.GetAuctionsForCategory(categoryName);
        return View(model);
    }
}

然后创建一条路线:

routes.MapRoute(
    "AuctionCategoryDetails",
    "Auctions/{categoryName}",
    new { controller = "Auction", action = "AuctionCategoryDetails" });

因此,当您显示类别列表(而非个别详细信息)时,

<% foreach (var category in Model.Categories) { %>
   <%: Html.RouteLink("Category Details", "AuctionCategoryDetails", new { categoryName = category.CategoryName });
<% } %>

这将生成如下链接列表:

<a href="/Auctions/Clothes">Category Details</a>
<a href="/Auctions/RealEstate">Category Details</a>

那是你的追求吗?

答案 1 :(得分:1)

是的,它叫做URL路由。您可以将类别映射到单个AuctionController操作,该操作会根据网址中的内容动态显示类别数据。

the ASP.NET MVC site的教程,涵盖了地面基础知识。