2016-10-05 7 views
0

特定の検索に使用するすべてのモデルを1つの汎用検索ビューにまとめようとしています。Razor MVCでVariableプロパティの名前を使用

は、私がこれに似た何かをどちらかの、唯一のモデルの一部のフィールドをレンダリングする必要があります(Psudoコード)

foreach (string textBoxFieldName in TextBoxFieldNames) 
    { 
     Html.Toolbox_TextBoxFor(m => m.textBoxFieldName) 
    } 

またはその属性が、例えば適用されるときに、モデルの属性を持つとチェック

[AppliedCases("Case1","Case4","Case77")] 
[ControlToUse("TextBoxFor")] 
public string LastName { get; set; } 

そして、いくつかは、どのようにビュー内のすべてのプロパティがCurrentCaseはモデルプロパティのAppliedCasesの一つと場合であればことを確認谷に行くことができるようになります:私はこのようなものがあるでしょうモデルで そうしてあなたは

答えて

1

にカミソリの魔法は私の質問はこれが正しいアプローチであると(それは、このトピックの名前である場合)どのように私は、動的レンダリングでいくつかの例を探して、それを実装しますので、場合に応じて

それを表示する使用しますHtml.Editorのオーバーロードを使用することができます。このオーバーロードは、小道具の名前(文字列として)をとります。あなたがレンダリングしたいerty:

var fieldNames = new string[] {"LastName"}; 
foreach (string fieldName in fieldNames) { 
    @Html.Editor(fieldName) 
} 

あなたは、テンプレートを使用しなければならないどのエディタに影響するのViewModelにUIHint属性を使用することができます。

[UIHint("MySpecialStringEditor")] 
public string LastName { get; set; } 

私はワークショップでは、我々はこれを使用していませんアプローチ。むしろ、同じViewModelの異なる明示的なビューを使用します。これにより、柔軟性が増し、理解と維持が容易になります。

関連する問題