Как использовать DisplayFor () для объектов, которые не являются частью моей модели в asp .net mvc 2? - PullRequest
2 голосов
/ 11 августа 2010

Я уверен, что мне здесь не хватает чего-то простого. Я создал собственный шаблон отображения DateTime. Это отлично работает при использовании:

<%= Html.DisplayFor(x=>x.DateTimeProperty) %>

Однако у меня есть ситуация, когда я перебираю объекты в модели в цикле for, находясь внутри частичного элемента управления. Я хочу, чтобы свойство DateTime использовало шаблон отображения, но я не могу понять, как его настроить. Свойство DateTime, как и должно быть. Выглядит как:

 <% foreach (var item in Model) { %>
       <%= Html.Encode(item.DateTimeProperty)  %>
 <% } %>

Я не могу вызвать Html.DisplayFor (...) из-за этой структуры, но я хочу, чтобы все свойства DateTime использовали мой шаблон отображения DateTime.

Я пытался добавить UIHint через DataAnotations, но, похоже, это не сработало.

Как мне это сделать?

1 Ответ

1 голос
/ 16 августа 2010

Не то чтобы этот вопрос получил много просмотров, но я нашел ответ и решил, что отправлю в случае, если кому-то будет интересно.

Решение было довольно простым:

<%= Html.DisplayFor(x=>item.ReviewDate, "DateTime") %>

МойПользовательский шаблон отображения (с именем: DateTime) определяется как:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<DateTime?>" %>
<% 
    string value = (Model.HasValue ? Model.Value.ToShortDateString() : ""); 
%>
<%= Html.Encode(value) %>

Наверное, я не осознавал, что когда вы объявляли лямбду, вам не нужно было использовать переменную в левой части'=>' вообще.Я всегда думал, что это обязательно.

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