2012-07-03 10 views
23

Używam MVC 3 i RazorBrzytwa, jak utworzyć moduł CheckBox i sprawić, że będzie on ZAPOZNAJ?

Obecnie używam

@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>  
} 

modelu Widok:

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

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

    } 
} 

Aby wyświetlić pole wyboru dla właściwości w moim modelu . Ponieważ robię to źle, mogę wyświetlać tylko tekst taki jak PRAWDA.

Czy możesz mi powiedzieć, jak utworzyć CheckBox za pomocą żyletki? Też potrzebowałbym mieć to jak ZAPOZNAJ.

Dzięki za pomoc.

Odpowiedz

29

powinno być coś takiego:

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

UPDATE:

Zakładając, że twoja klasa AdvSlot zawiera właściwość IsPublished można napisać w pętli:

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

Dziękuję LeftyX za komentarz, otrzymuję błąd i nie mogę utworzyć textcheckbox. czy mógłbyś mi pomóc? dzięki – GibboK

+0

Proszę zauważyć, że MyProperty jest właściwością w ViewModel każdy pomysł, jak go rozwiązać? dzięki – GibboK

+0

@ GibboK: czy mógłbyś, proszę, dołączyć również swój viewmodel? – LeftyX

0

W swojej MyViewModel ty może usunąć setera:

public bool IsPublished 
{ 
    get { 
     //... get from db 
     } 
} 

i w widoku:

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

Nadal mam pewne problemy, proszę zanotuj moją edycję – GibboK

+0

ta linia powinna dać ci błąd @ Html.CheckBox (item.IsPublished, new {@disabled = "disabled"}), ma pewne nieprawidłowe argumenty. –

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

to powinno działać. Jednak mam problem z @disabled = "disabled". Jeśli zaznaczę pole wyboru zaznaczone domyślnie i sprawię, że pole wyboru zostanie wyłączone w tym samym czasie, nie zostanie wysłane z jego wartością. W kontrolerze otrzyma fałsz. Korzystanie z funkcji "return false" nie będzie w stanie zmienić wartości, a także będzie domyślnie umieszczać wartość ustawioną przy załadowaniu.

+3

Twoja odpowiedź powinna zostać przyjęta. Jeśli użyjemy właściwości @ wyłączona = "wyłączona", pole tekstowe na zawsze przechodzi FAŁSZ do serwera –

+0

@Ahn Hoang Zgadzam się z Tobą. Jest to idealna odpowiedź w mojej opinii, ponieważ spotkałem się z tym samym, co powiedziałeś wcześniej. – gdmanandamohon

+0

To jest lepsze rozwiązanie –

1

Używam MVC4, można uzyskać ten sam efekt za pomocą prostego czegoś podobnego

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

Nie musisz się martwić, aby zaznaczyć pole wyborulub ustawić niepełnosprawnych siebie. Nie jestem pewien, czy jest to nowa funkcja w MVC4, więc może będzie działać również w MVC3.

Powiązane problemy