1

我正在重新打开我的问题,因为它已被设置为重复而不是重复 - 或者将其标记为重复的人应该向我解释为什么它是重复的............ https://stackoverflow。 com/questions/13227988/html-displayfor-result

如何在 C# 类中获取方法 Html.DisplayFor() 的结果,例如在 View 模型中甚至在 Controller 中?而不是在 View 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;      

例如,我想将此函数移出 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);

因为,它应该只将其值显示为字符串(除非您已为其设置模板)。

于 2012-11-05T09:13:04.203 回答