【问题标题】:How can I accomplish this type of URL in ASP.Net MVC2?如何在 ASP.Net MVC2 中完成这种类型的 URL?
【发布时间】:2023-03-07 07:36:01
【问题描述】:

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

够简单吧?

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

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

这将生成如下 URL:/Auctions/Clothes 和 /Auctions/RealEstate。正是我想要的。

问题是这需要手动修补。添加类别时,我必须手动创建一个新操作,然后为其创建一个新视图。

有没有更好的方法来做到这一点?

【问题讨论】:

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


    【解决方案1】:

    是的,它被称为 URL 路由。您将类别映射到单个 AuctionController 操作,该操作根据 URL 中的内容动态提供和显示类别数据。

    the ASP.NET MVC site 上有一个教程,涵盖了基础知识。

    【讨论】:

    • 您好,感谢您分享该链接。恐怕我并不真正理解如何使用路由来实现我的目标。我可以麻烦您寻求更多指导吗?谢谢。
    【解决方案2】:

    创建一个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>
    

    这就是你的追求吗?

    【讨论】:

    • 奇怪 - Stack 上的代码示例在过去几天被搞砸了。
    • 是的,完全正确!我会把它塑造成我正在寻找的东西。非常感谢您的帮助! :)
    • @RPM1984:我最近看到的问题都与实时预览有关。它们在实际帖子中表现良好。
    • @BoltClock - 但看看我的回答。前两个代码示例搞砸了(没有语法突出显示),但后两个很好。很奇怪。
    • @RPM1984:哇,在那种情况下我不知道。尝试了两次来弄乱空格,似乎没有帮助。问元,也许?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-14
    • 2016-09-14
    相关资源
    最近更新 更多