【问题标题】:Getting a strongly typed Model from MVC3 Helper从 MVC3 Helper 获取强类型模型
【发布时间】:2011-12-07 19:23:34
【问题描述】:

我发现了我的助手的一个属性,我认为它可以让我访问我的模型的属性,但我希望获得模型本身的一个实例。我有一个强类型模型的视图。模型的一个属性是其他模型的集合(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));
    }

【问题讨论】:

    标签: asp.net-mvc-3


    【解决方案1】:

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

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

    如果你想找出属性名,你只需要一个表达式树。

    【讨论】:

    • 这不仅回答了我所遇到的许多问题的这个问题。我需要找到有关表达式树的更多信息。我想我可以通过您的回答找到这个问题的解决方案以及更多。谢谢@SLaks!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-02
    • 1970-01-01
    相关资源
    最近更新 更多