Mam stronę MVC4, która ma formularz z kolekcją pól wyboru, przycisków radiowych i pól tekstowych używanych jako pola wyszukiwania. Po wpisie selekcje są analizowane, a siatka o niższych wynikach jest aktualizowana o nowe wyniki. Teraz wszystkie wartości formularzy są wymazywane po powrocie, a nowe wyniki są wyświetlane w siatce - tylko siatka jest częścią modelu.Zachowanie wartości formularza po wysłaniu (nie jest częścią modelu)
Chcę, aby wszystkie selekcje formularzy zachowały swoje wartości po poście, aby użytkownik mógł zobaczyć (i zmienić) wybory do następnego wpisu/wyszukiwania. Formularz jest zsynchronizowany z widokami.
@using (Html.BeginForm("Index", "Home", FormMethod.Post, new { id = "searchform" }))
{
@Html.ValidationSummary("Please correct the following errors")
<div style="float:left;">
<div style="float:left;">
<label>Name:</label>
@Html.TextBox("name")
</div>
<div style="float:left; margin-left:15px">
<label>Company:</label>
@Html.TextBox("company")
</div>
<div style="float:left; margin-left:65px">
<label>Date Range:</label>
@Html.TextBox("dateStart", "", new { @class = "datefield", type = "date" })
to
@Html.TextBox("dateEnd", "", new { @class = "datefield", type = "date" })
</div>
</div>
<div style="clear: both;">
Match Any Categories? <input type="radio" name="categoryMatchAll" value="false" checked="checked" />
Match All Categories? <input type="radio" name="categoryMatchAll" value="true" />
</div>
<div style="float:left;">
<div id="searchform-categories" style="float:left;">
<div class="scroll_checkboxes">
<label>Categories</label>
<ul>
@foreach (var x in ViewBag.Categories)
{
<li>
<input type="checkbox" name="categories" value="@x.Id"/>
@x.Name
</li>
}
</ul>
</div>
</div>
<div id="searchform-diversity" style="float:left; margin-left:30px">
<div class="search-selection" style="float:left;">
<label>Minority Owned</label>
<ul>
@foreach (var x in ViewBag.Minorities)
{
<li>
@Html.RadioButton("minorities", (String)x.Id.ToString())
@x.Name
</li>
}
</ul>
</div>
<div class="search-selection" style="float:left;">
<label>Diversity Class</label>
<ul>
@foreach (var x in ViewBag.Classifications)
{
<li>
@Html.RadioButton("classifications", (String)x.Id.ToString())
@x.Name
</li>
}
</ul>
</div>
</div>
</div>
<div style="clear: both;">
<input type="submit" value="Search Profiles" />
<input type="submit" value="Reset" />
</div>
}
siatka danych jest zobowiązany do modelu jako
@model IEnumerable<VendorProfileIntranet.Models.VendorProfile>
<table id="VendorTable" width="100%" class="gradeA">
<thead>
<tr>
<th>
@Html.DisplayNameFor(model => model.Name)
</th>
<th>
@Html.DisplayNameFor(model => model.CompanyName)
</th>
<th>
@Html.DisplayNameFor(model => model.City)
</th>
<th>
@Html.DisplayNameFor(model => model.State)
</th>
<th>
@Html.DisplayNameFor(model => model.DateCreated)
</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
@foreach (var item in Model)
{
<tr>
<td class="list-field">
@Html.DisplayFor(modelItem => item.Name)
</td>
<td class="list-field">
@Html.DisplayFor(modelItem => item.CompanyName)
</td>
<td class="list-field">
@Html.DisplayFor(modelItem => item.City)
</td>
<td>
@Html.DisplayFor(modelItem => item.State)
</td>
<td class="list-field">
@Html.DisplayFor(modelItem => item.DateCreated)
</td>
<td class="list-field">
@Html.ActionLink("Edit", "Edit", new { id = item.ProfileID }) |
@Html.ActionLink("View", "View", new { id = item.ProfileID }) |
@Html.ActionLink("Delete", "Delete", new { id = item.ProfileID }, new { onclick = " return DeleteConfirm()" })
</td>
</tr>
}
</tbody>
<tfoot>
<tr>
<td> </td>
</tr>
</tfoot>
thx za dostarczenie wszystkiego, spróbuję twojego rozwiązania. – SQLGrinder