5

たくさんのカテゴリを一覧表示するビューがあります。

<ul>
    <li>@Html.ActionLink("All", "Index", "Products")</li>
    @foreach (var item in Model.ProductCategories)
    {
        <li>@Html.ActionLink(item.Name, "Index", new { id = item.Id }, null)</li>
    }
</ul>

示されているように、カテゴリリンクのリストを取得する必要があります。一番上のリンクは「すべて」で、次のリンクはそれぞれのカテゴリ名で、IDがコントローラに渡されます。

私のコントローラーは次のようになります。

public ActionResult Index(int? id)
{
    var categories = _productCategoryRepository.GetAll().OrderByDescending(f => f.Name);
    var items = id == null
        ? _productItemRepository.GetAll().OrderBy(f => f.Name).ToList()
        : _productCategoryRepository.GetSingle((int)id).ProductItems.OrderBy(f => f.Name).ToList();

    var model = new ProductsViewModel()
                    {
                        ProductCategories = categories,
                        ProductItems = items
                    };

    return View(model);
}

したがって、カテゴリは常に同じである必要があります。ただし、 IDnullの場合、アイテムにはすべてのアイテムが表示され、 IDが設定されている場合は特定のカテゴリのアイテムが表示されます。

それはすべて絶対にうまくいくので、カテゴリリンクをクリックすると。私はこのようなURLに到達します:

/ Products / Index / 3

素晴らしい!ここで[すべて]リンクをクリックしますが、パラメーターを渡していないのに、/ Products / Index/3にルーティングされます。null値を渡してみました:

@Html.ActionLink("Alle", "Index", "Products", new { id = null })

しかし、エラーが発生します。匿名タイプのプロパティに「null」を割り当てることはできません。

nullをインデックスコントローラに強制的に渡すにはどうすればよいですか?

4

1 に答える 1

10

コントローラのアクションは、null許容型を受け入れるのに十分満足できるintので、そのようにnull許容型を指定intします。

@Html.ActionLink("Alle", "Index", "Products", new { id = (int?)null })
于 2013-02-01T03:28:57.007 に答える