2017-07-07 5 views
0

、次のコードは、あなたに精通している必要があります:各モデルプロパティのASP.NET MVC "編集"ビューでカミソリコードを繰り返さない方法は?あなたはASP.NET MVCを使用している場合は

<div class="row"> 
    <div class="form-sm-4"> 
     @Html.LabelFor(m => m.att) 
    </div> 
    <div class="form-sm-8"> 
     @Html.EditorFor(m => m.att, new { htmlAttributes = new { @class = "form-control" } }) 
     @Html.ValidationMessageFor(m => m.att) 
    </div> 
</div> 

これは、ラベル、入力および検証メッセージを設定し、基本的な入力グループです。

今日私は数十の属性を持つPOCOクラスに直面しています。つまり、モデルクラスにはN個のプロパティがあります。 HTMLを構築するためには、コードスニペットをN回以上繰り返さなければなりません。 DOMに変更がある場合は、手動ですべてのCSSクラスまたは特定のHTMLを変更する必要があります。

私は、数十のモデルプロパティのコードスニペットを繰り返す必要がないソリューションを探しています。

+0

質問は不明である

public static class PropertyExtensions { public static ModelWrapper<T> Wrap<T>(this T property, string propertyName) { var genericType = typeof(ModelWrapper<>); var specificType = genericType.MakeGenericType(typeof(T)); var wrappedPropertyModel = (ModelWrapper<T>)Activator.CreateInstance(specificType); wrappedPropertyModel.ModelProperty = property; wrappedPropertyModel.PropertyName = propertyName; return wrappedPropertyModel; } } public class ModelWrapper<T> { public string PropertyName { get; set; } public T ModelProperty { get; set; } } 

は、部分的なビューを作成します。モデルクラスのサンプルを与えてください。 – stomtech

+0

何十という属性の変更が何を意味するのかを説明してください。 htmlAttributesまたはオブジェクト内のプロパティを意味しますか? – stomtech

+1

OPは彼が** N **モデルクラスのプロパティ数を持っていることを意味すると思います。 HTMLを構築するには、コードスニペット** N **回以上繰り返す必要があります。 DOMに変更がある場合は、手動ですべてのCSSクラスまたは特定のHTMLを変更する必要があります。彼は、数十のモデル財産のコードスニペットを繰り返す必要がないソリューションを探しています。 – Prabhat

答えて

1

クラスを作成します。メインビューで

@model ModelWrapper<object> 

<div class="row"> 
    <div class="form-sm-4"> 
     @Html.Label(Model.PropertyName) 
    </div> 
    <div class="form-sm-8"> 
     @Html.EditorFor(m => m.ModelProperty, new { htmlAttributes = new { @class = "form-control" } }) 
     @Html.ValidationMessageFor(m => m.ModelProperty) 
    </div> 
</div> 

@Html.Partial("_PartialViewName", ((object)Model.YourVariableProperty).Wrap("YourVariableProperty")) 
関連する問題