Если вы активно используете HTML хелперы в ASP.NET MVC фреймворке, вам наверняка известен TextBoxFor() - о нем и пойдет речь.
Допустим, вы создаете форму с методом GET с целью организовать фильтр.
Контроллер и модель:
Допустим, вы создаете форму с методом GET с целью организовать фильтр.
Контроллер и модель:
public class HomeController : Controller { private static readonly string[] Fields = new[] {"Ann", "George", "Fred", "Amanda"}; public ActionResult Search(SearchModel searchModel) { searchModel = searchModel ?? new SearchModel(); searchModel.Field = searchModel.Field ?? string.Empty; searchModel.Field = Fields.FirstOrDefault(x => x.Contains(searchModel.Field)); return View(searchModel); } } public class SearchModel { public string Field { get; set; } }
Представление:
<% using (Html.BeginForm("Search", "Home", FormMethod.Get)) { %> <%= Html.TextBoxFor(x => x.Field) %> <% } %> <form action="<%= Url.Action("Search") %>" method="get"> <input id="Field" name="Field" type="text" value="<%= Model.Field %>" /> </form>
Запустив приложение, получим:
Введем во второе поле "g" и отправим форму нажатием на Enter. Вот что придет в ответ:
Почему в первом поле "g", когда должно быть "George", как во втором? Все просто, фреймворк анализирует строку запроса, и предпочитает значение Field=g из нее значению, приходящему в модели (Model.Field), что не плохо учитывать при разработке.
При этом, если интересно, вот во что рендерится представление:
Комментариев нет:
Отправить комментарий