1

重複していないのに重複として設定されているので、質問を再度開きます。または、重複としてタグ付けした人は、なぜ重複しているのか説明してください.......... https://stackoverflow。 com / questions / 13227988 / html-displayfor-result

ビューモデルやコントローラーのように、C#クラスでメソッドHtml.DisplayFor()の結果を取得するにはどうすればよいですか?そして、ViewAspxや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;      

たとえば、この関数をViewModelのビューの外に移動したいのですが、ビューの外で関数Html.DisplayFor()を呼び出す方法がわかりません。

4

1 に答える 1

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);

asとして、値を文字列としてのみ表示する必要があります(テンプレートを設定していない場合)。

于 2012-11-05T09:13:04.203 に答える