I wish to build a partial view that gets a model column and print it. Something like that:
At the view:
@model IEnumerable
Start by refactoring and putting the right logic into the right place. This LINQ query has strictly nothing to do in a view. A view is not supposed to do any LINQ queries or whatever to pull data. A view is supposed to work with data that it is passed to it from the controller action under the form of a view model. A controller action builds and passes an adapted view model that you define for the view.
So as always you start by defining a view model that will be adapted to the requirements of your view:
public class MyViewModel
{
public IEnumerable Brands { get; set; }
}
then you write a controller action that will populate this view model and pass it to the view:
public ActionResult Foo()
{
IEnumerable products = ...
var model = new MyViewModel
{
Brands = (from r in Model select r.Brand).Distinct()
};
return View(model);
}
then a view:
@model MyViewModel
Brand
@Html.DisplayFor(x => x.Brands)
and finally you could define a corresponding display template which will automatically be rendered for each element of the Brands
collection of your view model (~/Views/Shared/DisplayTemplates/Brand.cshtml
):
@model Brand
@Html.DisplayForModel()