2016-07-26 13 views
1

Ich habe eine Editor-Vorlage für Währung Float-Format wie folgt erstellt.Wie propagieren HTMLAttributes zu einem benutzerdefinierten EditorTemplate?

@using System.Globalization 
@{ 
    var ri = new RegionInfo(System.Threading.Thread.CurrentThread.CurrentUICulture.LCID); 
} 

<div class="input-group "> 
    <div class="input-group-addon">@ri.CurrencySymbol</div> 
    @Html.TextBox("", ViewData.ModelMetadata.Model, new { @class = " form-control text-box single-line" }) 
</div> 

, die eine Bootstrap-Eingangsgruppe mit Währungssymbol zeigt

enter image description here

Es funktioniert gut, aber im Versuch, einige zusätzliche Klassen wie "text-Gefahr" oder „Input-Gruppe-lg passieren "Diese Parameter werden jedoch nicht an die Editor-Vorlage übergeben.

@Html.EditorFor(model => model.money, new { htmlAttributes = new { @class = "text-danger input-lg form-group-lg" } }) 

die Klassen "text-Gefahr Input-lg Form gruppen lg" sind mit dem Haupt div nicht gesetzt.

Wie kann ich diese Klassen in meine Editor-Vorlage propagieren?

+0

Sie haben diesen Editor für welche Art? (float, int, string) –

+0

Sie können versuchen, ViewData wie '(string) ViewData [" ClassText "]' auf der Vorlage, '@ Html.TextBox (" ", ViewData.ModelMetadata.Model, new {@class =" form-control text-box einzeilige "+ (string) ViewData [" ClassText "]' dann auf dem editor für so wäre es '@ Html.EditorFor (model => model.money, neuer {ClassText =" text -danger input-lg form-gruppe-lg "})' –

+0

@FelipeDeguchi float –

Antwort

1

Gerade Route Viewdata verwenden [ „Htmlattributes“] zu einem Wörterbuch und bekommen „Klasse“ Wert

@{ 
    var htmlAttrib = ViewData["htmlAttributes"] 
    IDictionary<string, object> dic = new RouteValueDictionary(htmlAttrib); 
    var classes = dic ["class"]; 
} 

<div class="@classes" > your control .... </div>