Если вы активно используете 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), что не плохо учитывать при разработке.
При этом, если интересно, вот во что рендерится представление:
Комментариев нет:
Отправить комментарий