У меня проблемы с получением данных из текстового поля в контроллер. Я прочитал о нескольких способах достижения этой цели в книге Сандерсона Pro ASP.NET MVC Framework, но не добился успеха.
Кроме того, я натолкнулся на несколько похожих вопросов в Интернете, но там тоже не добился успеха. Похоже, я упускаю что-то довольно фундаментальное.
В настоящее время я пытаюсь использовать подход параметров метода действия. Может кто-нибудь указать, где я иду не так или привести простой пример? Заранее спасибо!
Использование Visual Studio 2008, ASP.NET MVC2 и C #:
Я хотел бы взять данные, введенные в текстовое поле «Исследователь», и использовать их для фильтрации следователей в контроллере. Я планирую сделать это в методе List (который уже работает), однако я использую метод SearchResults для отладки.
Вот код текстового поля, на мой взгляд, SearchDetails:
<h2>Search Details</h2>
<% using (Html.BeginForm()) { %>
<fieldset>
<%= Html.ValidationSummary() %>
<h4>Investigator</h4>
<p>
<%=Html.TextBox("Investigator")%>
<%= Html.ActionLink("Search", "SearchResults")%>
</p>
</fieldset>
<% } %>
Вот код моего контроллера, InvestigatorsController:
private IInvestigatorsRepository investigatorsRepository;
public InvestigatorsController(IInvestigatorsRepository investigatorsRepository)
{
//IoC:
this.investigatorsRepository = investigatorsRepository;
}
public ActionResult List()
{
return View(investigatorsRepository.Investigators.ToList());
}
public ActionResult SearchDetails()
{
return View();
}
public ActionResult SearchResults(SearchCriteria search)
{
string test = search.Investigator;
return View();
}
У меня есть класс следователя:
[Table(Name = "INVESTIGATOR")]
public class Investigator
{
[Column(IsPrimaryKey = true, IsDbGenerated = false, AutoSync=AutoSync.OnInsert)]
public string INVESTID { get; set; }
[Column] public string INVEST_FNAME { get; set; }
[Column] public string INVEST_MNAME { get; set; }
[Column] public string INVEST_LNAME { get; set; }
}
и создал класс SearchCriteria, чтобы посмотреть, смогу ли я заставить MVC выдвинуть в него данные критериев поиска и захватить их в контроллере:
public class SearchCriteria
{
public string Investigator { get; set; }
}
} * * тысяча двадцать-один
Я не уверен, что компоновка проекта также имеет какое-либо отношение к этому, но я использую подход с тремя проектами, предложенный Sanderson: DomainModel, Tests и WebUI. Классы Investigator и SearcCriteria находятся в проекте DomainModel, а другие элементы, упомянутые здесь, находятся в проекте WebUI.
Еще раз спасибо за любые подсказки, советы или простые примеры!
Mike