1

我想从不同于我当前的类型MvcHtmlString的方法中获得结果。下面的代码编译但总是返回一个空字符串。HtmlHelper.DisplayHtmlHelper

public static MvcHtmlString GetPropertyValue(this HtmlHelper html, string property, object value)
{
    var dictionary = new ViewDataDictionary();
    dictionary.Add(property, value);
    var fooHelper = new HtmlHelper<FooModel>(
        new ViewContext(
            html.ViewContext, 
            new WebFormView(html.ViewContext, "dummy"), 
            dictionary, 
            new TempDataDictionary(),
            TextWriter.Null),
        new ViewPage());
    return fooHelper.Display(property);
}

所有的辅助对象(ViewContextsControllerContextsViewDataDictionaries等)对我来说都是一个黑盒子;我确定我遗漏了一些明显的东西。

我怎样才能让它工作?

对于好奇:这将在我的应用程序的审核页面上使用。我有string数据库中的属性名称(作为 a )、旧值和新值。我也知道用于显示由记录表示的模型的实际实例的类型。我想重用模型类中的所有数据注释来显示 HTML。

4

1 回答 1

1

我有同样的问题。我想要什么:

我想创建自己的 html 扩展方法,它可以做一些事情,而不是调用 DisplayFor。在该方法的显示中,我将传递我的不同模型对象。

我的解决方案

public static MvcHtmlString ShowProperty<T>(this HtmlHelper<T> helper, NewModel mynewModel){
        return helper.DisplayFor(m => myNewModel, "TemplateName");
    }

也许这对某些人有用

于 2013-04-17T08:43:09.413 回答