我发现我的助手的属性我认为可以让我访问我的模型的属性,但我希望得到一个模型本身的实例。我有一个强类型模型的视图。该模型的一个属性是其他模型(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));
}
答案 0 :(得分:1)
听起来你想要一个价值,而不是表达。
扩展非通用HtmlHelper
类并将原始TestModel
实例作为参数。
如果要查找属性名称,只需要一个表达式树。