Как я могу выполнить этот тип URL в ASP.Net MVC2? - PullRequest
4 голосов
/ 13 декабря 2010

У меня есть таблица под названием Категории.Я хочу, чтобы пользователь щелкнул список категорий и затем загрузил список всех аукционов этой категории.

Достаточно просто, верно?

Я мог бы создать действие для каждой категории, что-тонапример:

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

Это приведет к созданию таких URL-адресов, как: / Аукционы / Одежда и / Аукционы / RealEstate.Именно то, что я ищу.

Проблема в том, что это требует ручной работы.Когда я добавлю категорию, мне придется вручную создать новое действие, а затем создать новое представление для него.

Есть ли лучший способ сделать это?

Ответы [ 2 ]

4 голосов
/ 13 декабря 2010

Создать один 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 голос
/ 13 декабря 2010

Да, это называется маршрутизацией URL.Вы сопоставляете свои категории с одним действием AuctionController, которое динамически обслуживает и отображает данные категории в зависимости от того, что находится в URL.

На есть сайт ASP.NET MVC , который охватываетОсновы земли.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...