2012-11-05 29 views
1

我重新打開我的問題,因爲它已被設置爲重複,而不是 - 或者標記爲重複的人應該解釋爲什麼它是一個複製.......... https://stackoverflow.com/questions/13227988/html-displayfor-resultASP .NET MVC - 獲取對象模板字符串結果出一個視圖

如何在C#類中獲取Html.DisplayFor()方法的結果,比如在View模型或Controller中?而不是在視圖Aspx或Razor中。

[編輯] 事實上,我有一個表來顯示,並根據記錄的數量我使用Telerik表或簡單的HTLM表。

目前我在我的視圖中有一個函數來獲取每個列顯示的字符串,所以我對這兩個表使用相同的格式。

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<ViewModels.OrderViewModel>" %> 

<script runat="server" type="text/C#"> 

public string GetCellValue (String columnName, Order order) 
{ 
     string value = ""; 
     switch (columnName) 
     { 
      case "Ref": 
       value = order.order.Reference.ToString(); break; 
      case "Etc": 
       value = Html.DisplayFor(p => order.order.Etc).ToHtmlString();break;    
      case "Payment date": 
       foreach (Executions ex in order.executions) 
       { 
        value += ex.Date.Date.ToString("yyyy-MM-dd") + " "; 
       } 
       break;  

我想搬到這個功能了我的視圖模型視圖例如,但我不知道我怎麼可以調用函數Html.DisplayFor()了看法。

+0

這個問題很清楚,你最後一個不是。 – dove

+0

你可以在這裏發佈你的代碼嗎? – swapneel

回答

2

不明白你爲什麼會想這樣做,但是......

using System.Web.Mvc; 
using System.Web.Mvc.Html; 

class Example {  

    void Method() 
    { 
     HtmlHelper<TModel> Html = new HtmlHelper<TModel>(); 
     MvcHtmlString result = Html.DisplayFor(prop => Model.Prop); 
    } 
} 

你的編輯後,如果移動GetCellValue到另一個地方,也許你只需要做

 MvcHtmlString result = new MvcHtmlString(order.order.Etc); 

因爲它應該只顯示它​​的值作爲字符串(除非你已經爲它設置了一個模板)。

+0

它似乎沒有使用ASP .NET MVC 3,方法DisplayFor不可用。 – user1756338

+0

我現在無法檢查,因爲我沒有在工作中安裝Mvc 3(並且沒有安裝權限),但我會用其他方式編輯我的答案。 –

+0

不幸的是,Etc是一個實體對象,並且MvcHtmlString的構造函數正在詢問一個字符串,所以它不起作用。 – user1756338