我有一个名为Categories的表。我希望用户从类别列表中单击,然后加载该类别中所有拍卖的列表。
很简单,对吧?
我可以为每个类别创建一个动作,例如:
public ActionResult Cellphones()
public ActionResult Electronics
public ActionResult Clothes
public ActionResult Cars
public ActionResult RealEstate
这将生成以下URL:/ Auctions / Clothes和/ Auctions / RealEstate。正是我在寻找的东西。
问题是这需要手动修补。当我添加一个类别时,我将不得不手动创建一个新动作,然后为它创建一个新视图。
有更好的方法吗?
答案 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的教程,涵盖了地面基础知识。