Chociaż czytałem dokumentację na Html.HiddenFor, nie zrozumiałem, do czego jest używany ...Co robi Html.HiddenFor?
Czy ktoś mógłby wyjaśnić jego zastosowania i podać krótki przykład?
Gdzie te pomocników iść w kodzie?
Chociaż czytałem dokumentację na Html.HiddenFor, nie zrozumiałem, do czego jest używany ...Co robi Html.HiddenFor?
Czy ktoś mógłby wyjaśnić jego zastosowania i podać krótki przykład?
Gdzie te pomocników iść w kodzie?
Tworzy ukryte wejście na formularzu dla pola (od modelu), które przechodzą go.
Jest to użyteczne dla pól w modelu/ViewModel, które trzeba utrzymywać na stronie i które przeszły z powrotem, gdy inne połączenie jest wykonane, ale nie powinny być postrzegane przez użytkownika.
Rozważmy następującą klasę ViewModel:
public class ViewModel
{
public string Value { get; set; }
public int Id { get; set; }
}
Teraz chcesz stronę edycji przechowywać identyfikator, ale mają nie być widziany:
<% using(Html.BeginForm() { %>
<%= Html.HiddenFor(model.Id) %><br />
<%= Html.TextBoxFor(model.Value) %>
<% } %>
Powoduje to równowartość następujący kod HTML :
I do pochłaniania ukrytego dowodu tożsamości z powrotem do metody akcji edycji:
[HttpPost]
public ActionResult Edit(FormCollection collection)
{
ViewModel.ID = Convert.ToInt32(collection["ID"]);
}
Chociaż jest to prawdą techniczną, nie powinieneś tego robić, jeśli formularz jest silnie wpisany w model widoku. Powinieneś mieć możliwość bezpośredniego dostępu do modelu, co eliminuje konieczność jakiejkolwiek konwersji. – Yetti
@Yetti: Niepoprawnie. Jest dobry powód, dla którego mechanizm rusztowania dodaje pole ID. Usuń go z jednego z moich tutoriali i użyj Fiddlera, aby zobaczyć, że nie ma go w treści postu. – RickAndMSFT
Nie jestem pewien, w jaki sposób komentarz jest nieprawidłowy. Jeśli Model jest własnością * Dla() * 'd w widoku, metoda kontrolera powinna być silnie wpisana i automatycznie wypełniana przez moduł ModelBinder. –
Wykorzystanie kodu Razor @ Html.Hidden lub @ Html.HiddenFor jest podobny do następującego kodu HTML
<input type="hidden"/>
A także skierować poniższy link
Podobnie jak wiele funkcji, ten może być używany na wiele różnych sposobów, aby rozwiązać wiele różnych problemów, myślę, że jest to kolejne narzędzie w naszych paskach narzędzi.
tej pory dyskusja koncentrowała się w dużej mierze na po prostu ukrywa identyfikator, ale to jest tylko jedna wartość, to dlaczego nie wykorzystać go na wiele wartości! Właśnie to robię, używam go do ładowania wartości w klasie tylko jeden widok na raz, ponieważ html.beginform tworzy nowy obiekt i jeśli twój obiekt modelu dla tego widoku ma już pewne wartości przekazane do niego, te wartości zostaną utracone, chyba że podasz odniesienie do tych wartości w beginformie.
Aby zobaczyć wielką motywację do html.hiddenfor, polecam zobaczyć Passing data from a View to a Controller in .NET MVC - "@model" not highlighting
Gdzie należy, że pomocnik iść w kodzie? – JPCF
<% = Html.HiddenFor (model.Id)%>
w swoim przykładzie powyżej –
Powiedziałbym "widziane" przez użytkownika. Użytkownicy mogą "modyfikować" wszystko, co chcą, ukryć lub nie. –