2013-07-03 7 views
7

Podczas korzystania z edytora EditorTemplate, jeśli chcę, aby wartość wyświetlana na modelu była wyświetlana na ekranie, a także aby została przesłana z powrotem do kontrolera, jakiego pomocnika powinienem użyć?ASP.Net MVC Odświeżenie wartości etykiety do kontrolera

tj. jeśli mogę użyć TextBoxFor:

@Html.TextBoxFor(model => model.RoomTypeName) 

... następnie użytkownik może zmienić tekst ...

wolałbym po prostu pokazać tekst, ale jeśli mogę użyć:

@Html.DisplayTextFor(model => model.RoomTypeName) 

. .. then to nie jest wysyłane z powrotem do kontrolera.

więc to jedyny sposób mogę wyświetlić tekst, a także do zapewnienia mój stan model jest ważne, aby dodać drugi ukryte pole, np

@Html.DisplayTextFor(model => model.RoomTypeName) 
@Html.HiddenFor(model => model.RoomTypeName) 

wiem, że działa, ale jestem zastanawiasz się, czy istnieje bardziej elegancki sposób robienia tego - czy mogę wyświetlić wartość i odesłać ją z powrotem, bez potrzeby replikowania jej również jako ukrytego elementu?

Dziękuję

Mark

+2

Używanie 'HiddenFor' jest już całkiem eleganckie i standardowe dla tych rzeczy. – sed

+0

ok, dziękuję Steve - Myślałem, że MVC/C# może mieć "jednego pomocnika, który pasuje do wszystkich" - ale jeśli to jest odpowiedź, to proszę, opublikuj to, a ja oznaczyę to jako takie. Pozdrawiam, Mark – Mark

+1

Wygląda na to, że warto ponownie rozważyć logikę interfejsu użytkownika. Zamieszczanie "wszystkiego" (etykiet dołączonych) z powrotem na serwer WWW jest bardzo podobne do WebForms. W MVC całkiem normalnym rozwiązaniem jest odpisywanie tylko tego, co jest konieczne i proste pobieranie potrzebnych wartości z bazy danych/pamięci podręcznej. Znowu, nie ma mowy o twojej pełnej sytuacji i może istnieć ważny powód do wdrożenia tego rodzaju logiki. –

Odpowiedz

12
@Html.DisplayTextFor(model => model.RoomTypeName) 
@Html.HiddenFor(model => model.RoomTypeName) 

To jest bardzo czysty i standardowy sposób robienia tego, co chcesz osiągnąć.

Jeśli chciałbyś stworzyć własnego pomocnika HTML, który robi dokładnie to samo, zapisanie jednej linii mogłoby zmylić osoby, które mogłyby odczytać twój kod w przyszłości, a nawet ciebie.