从MVC3 Helper获取强类型模型

时间:2011-12-07 19:23:34

标签: asp.net-mvc-3

我发现我的助手的属性我认为可以让我访问我的模型的属性,但我希望得到一个模型本身的实例。我有一个强类型模型的视图。该模型的一个属性是其他模型(TestModel)的集合。我想以标准方式呈现集合中的每个项目。所以,我的视图代码看起来像这样。

@foreach(var testModel in @Model.Items){
    @Html.DisplayViewerFor(@testModel)
}

我的助手看起来像这样。

public static MvcHtmlString DisplayViewerFor(this HtmlHelper<TestModel> helper, Expression<Func<TestModel>> expression, bool rightAligned = true) {
        var modelData = helper.ViewData;
        var prop = modelData[""];
        var outterDiv = new TagBuilder("div");
        outterDiv.AddCssClass(rightAligned ? "item-display-right" : "item-display");

        //Create other markup using modelData here
        //Would prefer to use an instance of TestModel


        return new MvcHtmlString(outterDiv.ToString(TagRenderMode.EndTag));
    }

1 个答案:

答案 0 :(得分:1)

听起来你想要一个价值,而不是表达。

扩展非通用HtmlHelper类并将原始TestModel实例作为参数。

如果要查找属性名称,只需要一个表达式树。