2012-07-03 5 views
23

Ich MVC 3 Razor und mitRazor wie man eine CheckBox erstellt und sie READONLY macht?

Im Moment

@model MyProject.ViewModels.MyViewModel 

    @foreach (var item in Model.MyProperty) 
{ 
    <tr> 
     <td> 
      @Html.ActionLink("Edit", "Edit", new { id = item.AdvSlotId }) | 
      @Html.ActionLink("Details", "Details", new { id = item.AdvSlotId }) | 
      @Html.ActionLink("Delete", "Delete", new { id = item.AdvSlotId }) 
     </td> 
     <td> 
      @item.AdvSlotId 
     </td> 
     <td> 
      @item.Name 
     </td> 
     <td> 
      @item.Description 
     </td> 
     <td> 
      @Html.CheckBox(item.IsPublished, new { @disabled = "disabled" }) 
     </td> 
     <td> 
      @item.Notes 
     </td> 
    </tr>  
} 

Die View-Modell Ich verwende:

namespace MyProject.ViewModels 
{ 
    public class MyViewModel 
    { 
     public MyViewModel(List<AdvSlot> advSlots) 
     { 
      MyProperty= advSlots; 
     } 

     public List<AdvSlot> MyProperty { get; set; } 

    } 
} 

Um eine Unterkunft in meinem Modell ein Kontrollkästchen angezeigt werden . Da ich falsch liege, kann ich nur einen Text wie WAHR anzeigen.

Können Sie mir bitte sagen, wie Sie die CheckBox mit Razor erstellen? Ich würde es auch als READONLY haben müssen.

Danke für Ihre Hilfe.

Antwort

29

sollte wie folgt sein:

@Html.CheckBoxFor(m => m.IsPublished, new { @disabled = "disabled" }) 

UPDATE:

Unter der Annahme, dass Ihre Klasse AdvSlot eine Eigenschaft enthält IsPublished Sie in Ihrer Schleife schreiben:

<td> 
    @Html.CheckBox(item.AdvSlotId + "_IsPublished", item.IsPublished, new { @disabled = "disabled" }); 
</td> 
+0

Dank LeftyX für Ihren Kommentar, erhalte ich einen Fehler und ich kann nicht Textcheckbox erstellen. Könntest du mir bitte helfen? danke – GibboK

+0

Bitte beachten Sie MyProperty ist eine Eigenschaft im ViewModel keine Idee, wie man es löst? Danke – GibboK

+0

@GibboK: Könnten Sie, bitte, auch Ihr Viewmodel einbinden? – LeftyX

0

In Ihrem MyViewModel Sie kann den Setter entfernen:

und in der Ansicht:

@Html.CheckBoxFor(m => m.IsPublished, new {@disabled="disabled"}) 
+0

Ich habe immer noch einige Probleme, bitte beachten Sie meine Bearbeitung – GibboK

+0

diese Zeile sollte Ihnen Fehler @ Html.CheckBox (item.IsPublished, neue {@disabled = "disabled"}), es hat einige ungültige Argumente –

16
@Html.CheckBoxFor(model => model.IsActive, new { onclick = "return false" }) 

Das sollte funktionieren. Ich habe jedoch ein Problem mit @disabled = "disabled". Wenn ich das Kontrollkästchen standardmäßig aktiviert habe und das Kontrollkästchen gleichzeitig deaktiviert, wird es nicht mit seinem Wert veröffentlicht. Am Controller wird es falsch. Bei Verwendung von "return false" kann der Benutzer den Wert nicht ändern, und der Wert, der standardmäßig auf load gesetzt wurde, wird ebenfalls gepostet.

+3

Ihre Antwort sollte akzeptiert werden. Wenn wir property @ disabled = "disabled" verwenden, übergibt die textboxfor immer FALSE an Server –

+0

@Ahn Hoang Ich stimme Ihnen zu. Dies ist meiner Meinung nach eine perfekte Antwort, denn ich habe dasselbe erlebt, was Sie zuvor gesagt haben. – gdmanandamohon

+0

Dies ist eine bessere Lösung –

1

ich MVC4 bin mit, erhalten Sie den gleichen Effekt mit einem einfachen so etwas wie

@Html.DisplayFor(m => m.IsPublished) 

Keine Notwendigkeit Checkbox oder deaktiviert Gerät selbst wählen zu kümmern. Nicht sicher, ob dies eine neue Funktion in MVC4 ist, vielleicht wird es auch in MVC3 funktionieren.

Verwandte Themen