ASP .NET MVC, formularze

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.

Leave a Reply

Your email address will not be published.