簡體   English   中英

如何將DisplayFor()用於不直接屬於asp .net mvc 2模型中模型的對象?

[英]How do I use DisplayFor() for objects that are not directly part of my model in asp .net mvc 2?

我確定我在這里遺漏了一些非常簡單的東西。 我創建了一個自定義的DateTime顯示模板。 使用以下方法時效果很好:

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

但是,有一種情況是我在部分控件內部的for循環中迭代Model中的對象。 我希望DateTime屬性使用顯示模板,但是我不知道如何指示它使用顯示模板。 該屬性應為DateTime。 看起來像:

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

由於這種結構,我無法調用Html.DisplayFor(...),但我希望所有DateTime屬性都使用我的DateTime顯示模板。

我嘗試通過DataAnotations添加UIHint,但這似乎沒有用。

我該怎么做呢?

並不是說這個問題有很多看法,但是我找到了答案,並認為如果有人好奇的話,我會發帖。

解決方案非常簡單:

<%= 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) %>

我想我沒有意識到,當您聲明lambda時,您根本不需要使用'=>'左側的變量。 我一直認為這是強制性的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM