2010-12-16 12 views
1

Ich möchte dieselbe Teilansicht für Erstellungs-, Bearbeitungs- und Detailansichten verwenden, um zu vermeiden, dass die Feldgruppenstruktur für eine Entität dupliziert wird. Abhängig davon, welche Ansicht die partielle Ansicht darstellt, möchte ich dann eine Klasse von "schreibgeschützt" zu einem div hinzufügen, das mein fieldset umgibt, und die tatsächlichen Eingabefelder auf dem Client schreibgeschützt machen, indem ich css oder jQuery benutze was auch immer. Wie kann ich in meiner Razor-Ansicht angeben, dass ich diese Klasse zum "item-details" div hinzufügen muss?Rendern eines HTML-Attributs aus einer Razor-Ansicht

<div class="item-details"> 
    <fieldset> 
     <legend>Product Details</legend> 
     @Html.HiddenFor(model => model.DetailItem.ProductId) 
     <div class="editor-label"> 
      @Html.LabelFor(model => model.DetailItem.Name) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.DetailItem.Name) 
      @Html.ValidationMessageFor(model => model.DetailItem.Name) 
     </div> 
     <p> 
      <input type="submit" value="Save" /> 
     </p> 
    </fieldset> 
</div> 

Antwort

1

Ich würde in der Regel eine Variable auf dem Modell, das anzeigen würde, wenn Ihre Daten bearbeitet werden kann, und verwenden Sie es mögen:

<div class="item-details @(Model.IsReadOnly ? "read-only" : "")"> 

Wenn Sie es nicht aber auf das Modell haben, können Sie kann die ViewBag verwenden. In Ihren Eltern Ansicht:

@{ 
    ViewBag.IsModelReadOnly = true; 
} 

in Ihrer Teilansicht:

<div class="item-details @(ViewBag.IsModelReadOnly ? "read-only" : "")"> 

Ihre HTML-Ausgabe für eine Nur-Lese-Ansicht wäre

<div class="item-details read-only"> 

Sie dann die div über jQuery zugreifen kann und tun was Sie brauchen: $(".read-only")...

0

Warum nicht einfach

012 verwenden

@ Html.DisplayFor (Modell => Modell. [Welche Eigenschaft möchten Sie zeigen])

Verwandte Themen