1

Asp.Net MVC のモノレール ビュー コンポーネントに相当するものはあるのでしょうか。

私がやろうとしているのは、クラスに依存するいくつかの複雑な UI をレンダリングすることです。つまり、List ビューにいるとします。この ViewComponent に相当するオブジェクトを渡し、オブジェクトをパラメーターとして受け取り、複合体をレンダリングします。ビューで他のことをできるようにするUI。Asp.Net MVC でこれを行う最善の方法は何でしょうか?

これは複雑な UI であるため、一度記述することを好みます。そのため、保守性の問題が発生することを意味するため、テンプレートは実際に使用したい方法ではありません。
私が見たいくつかのオプション(そして私は試し始めようとしています)は次のとおりです。

  • 将来の Html.RenderAction
  • サブコントローラー

ただし、他に何かあるかどうか、またはこの特定のシナリオで一方が他方よりも優れているかどうかを知りたいです

4

5 に答える 5

2

使用できます

<% Html.RenderAction<ProductController>(c => c.RenderProductResults()); %>

このページを見てください

于 2009-10-13T18:12:33.140 に答える
2

RenderPartial はどうですか?それは法案に合っているようです。

<% Html.RenderPartial("MyPartialView", Model.Data); %>
于 2009-10-13T14:40:53.257 に答える
0

または、テンプレートヘルパーが必要ですか?

于 2009-10-13T18:14:31.390 に答える
0

MvcContrib InputBuilder has something similar.

Though you may just write your own:

public static string RenderInput(this HtmlHelper html, object data, string prefix)
{
   foreach (var prop in data.GetType().GetProperties())
   {
      object val = prop.GetValue(data, new object[0]);
      string name = prefix + prop.Name;
      switch (prop.PropertyType.Name)
      {
          case "String": html.TextBox(name, val); break;
          case "Guid": html.Hidden(name, val); break;
          default: html.RenderInput(val, name + "."); break;
      }
   }
}

Notice recursion. Of course you will have to add collections support, etc... inside switch(PropertyType)... but this is not that hard. You may also check for UIHint on the property to render partials. A lot of possibilities and all under your control ;-)

于 2009-10-13T18:01:18.873 に答える
0

MVC 2 プレビューの DisplayTemplates と EditorTemplates をご覧ください。

于 2009-10-13T12:51:14.793 に答える