Formularz w ASP .NET MVC można zdefiniować za pomocą czystego HTML np:
<form action="Clients/Create" method="post"> <input type="text" /> <input type="submit" /> </form>
Znacznie wygodniejszym rozwiązaniem jest jednak użycie metod dostarczonych przez helpery. W ASP .NET MVC podstawowym helperem jest HTMLHelper do którego można uzyskać referencję w widoku za pomocą właściwości HTML. Stworzenie formularza wygląda więc następująco:
<% using (Html.BeginForm()) { %> <%}%>
Domyślnie zostanie użyta akcja w której się znajdujemy – np. /Clients/Create. Można również zdefiniować konkretny kontroler, akcję i tzw. route values:
<% using (Html.BeginForm("akcja","kontroler",new{id=3},FormMethod.Get,null)) { %> <%}%>
Powyższy formularz typu get wywoła w zależności od ustawień routingu “/kontroler/akcja/3” lub “/kontroler/akcja/?id=3 “.
W analogiczny sposób za pomocą helpera można definiować poszczególne pola:
<%=Html.TextBox("FirstName",Model.Client.FirstName) %> <%=Html.TextAreaFor(Model.Product.Description) %>
Ponadto pola mogą być weryfikowane pod kątem zawartości. Najpierw zobaczmy jak w widoku można oznaczać takie pola:
<% using (Html.BeginForm()) { %> <%=Html.ValidationSummary() %> <%=Html.TextBox("FirstName",Model.Client.FirstName) %> <%=Html.ValidationMessage("FirstName", "*")%> <%}>
ValidationSummary pokazuje szczegółowy opis walidacyjny z wszystkich pól. Z kolei ValidationMessage odnosi się wyłącznie do pojedynczego pola. W tym przypadku gdy imię nie przejdzie walidacji pozytywnie zostanie wyświetlona gwiazdka. W kontrolerze można walidować dane i wszelkie błędy zgłaszać za pomocą AddModelError:
public ActionResult Create() { ... this.ModelState.AddModelError("FirstName", "Nieprawdiłowe imię"); ... }
W następnym poście napiszę o MasterPages widokach częściowych – zapraszam.