У меня есть вид, который отображает список элементов. Вместо отображения элементов в сетке я хотел бы отображать 4 элемента на странице, каждый с изображением и несколькими свойствами, отображаемый в уникальном макете.
Итак, я бы хотел, чтобы foreach перебирал элементы, и каждый элемент отображался в div. Я мог бы поместить весь код в цикл, но я хотел бы иметь собственное расширение html-помощника для этого.
Я придумал это,
public static MvcHtmlString DisplayViewerFor(this HtmlHelper helper, TestModel model, bool rightAligned = true) {
if (model == null) {
model = new TestModel();
}
var outterDiv = new TagBuilder("div");
outterDiv.AddCssClass(rightAligned ? "item-display-right" : "item-display");
var image = new TagBuilder("image");
image.Attributes.Add("src", "Item/GetImage/" + model.ItemName);
image.Attributes.Add("height", "150");
var editorLabel = new TagBuilder("div");
editorLabel.AddCssClass("editor-label");
//LOOKING TO ADD CODE LIKE THIS HERE
var labelContent= html.LabelFor({my model property here})
editorLabel.InnerHtml += labelContent;
//END OF ADD
return new MvcHtmlString(outterDiv.ToString(TagRenderMode.EndTag));
}
В моем методе выше мне нужно отобразить еще несколько значений, и я хотел бы использовать помощники Html.LabelFor и Html.DisplayFor, но методы недоступны, и я не уверен, что передать их, если они были.
Я не уверен, возможно ли это или нет, но я решил спросить.
EDIT
Я пытаюсь использовать html.LabelFor. Посмотрите мой код, где я обновил его выше, добавив к нему эти две строки.
var labelContent= html.LabelFor({my model property here})
editorLabel.InnerHtml += labelContent;
Вы можете увидеть код выше.
РЕДАКТИРОВАТЬ 2
Вот запланированное использование этого помощника с заглушкой.
@ model TestItemDisplayList
@ {
ViewBag.Title = "Items";
Layout = "~ / Views / Shared / _Layout.cshtml";
}
@ foreach (элемент var в @ model.Items) {
@ Html.DisplayViewerFor (пункт)
}