Я играю с приложением ASP.NET MVC и столкнулся с небольшой проблемой. Я довольно новичок в ASP.NET MVC и едва понимаю основы для того, чтобы заставить вещи работать на этом этапе.
У меня есть PersonModel, PersonController и набор представлений, которые позволяют пользователю добавлять нового человека, редактировать человека и искать людей.
Я не использую базу данных в серверной части. Все, что я делаю, зависит от внешней DLL, которая возвращает структуры "человек" (которые я превращаю в PersonModels).
Чтобы искать людей, я должен предоставить личную структуру, которая действует как критерий поиска для метода во внешней DLL. Метод возвращает коллекцию личностных структур, соответствующих критериям поиска. Если я хочу получить всех людей в системе, я предоставляю пустую структуру человека для метода.
Итак, у меня работает функция "извлечь всех людей" ..... но я бы хотел предоставить расширенный поиск.
Мое представление поиска связано с классом, который содержит 2 свойства:
Public Class PersonSearchModel
Private _searchCriteria As PersonModel
Private _searchResults As List(Of PersonModel)
Public Property SearchCriteria As PersonModel
Get
return _searchCriteria
End Get
Set(ByVal value As PersonModel)
_searchCriteria = value
End Set
End Property
Public Property SearchResults As List(Of PersonModel)
Get
return _searchResults
End Get
Set(ByVal value As List(Of PersonModel))
_searchResults = value
End Set
End Property
End Class
Теперь представление поиска привязывается к этой модели PersonSearch, и у меня есть 2 раздела ... раздел, в котором пользователь может предоставить критерии поиска, и раздел, в котором отображаются результаты поиска.
У меня проблема с привязкой PersonSearchModel.SearchCriteria к элементам управления, используемым для отображения / сбора критериев поиска Person.
Я не могу получить критерии поиска.
Это то, что я имею в виду для критериев поиска:
<fieldset>
<legend>Search Criteria</legend>
<%
With Model.SearchCriteria
%>
<div style="float:left">
<p>
<label for="FirstName">
FirstName:</label>
<%=Html.TextBox("FirstName", Html.Encode(.FirstName))%>
<%= Html.ValidationMessage("FirstName", "*") %>
</p>
<p>
<label for="LastName">
LastName:</label>
<%=Html.TextBox("LastName", Html.Encode(.LastName))%>
<%= Html.ValidationMessage("LastName", "*") %>
</p>
<!-- More controls -->
</div>
<% End With%>
</fieldset>
<%=Html.ActionLink("Search", "Search",Model.SearchCriteria)%>
<!-- The Search Results Section-->
PersonModel, переданный в метод Search, является новым / пустым объектом PersonModel.
Он не содержит данных, введенных пользователем.
Что я здесь не так делаю?
********** Редактировать **********
Я пытался изменить вид, чтобы связать по-другому. Я снял VB "С":
<fieldset>
<legend>Search Criteria</legend>
<div style="float:left">
<p>
<label for="FirstName">
FirstName:</label>
<%=Html.TextBox("FirstName", Html.Encode(.FirstName))%>
<%= Html.ValidationMessage("FirstName", "*") %>
</p>
<p>
<label for="LastName">
LastName:</label>
<%=Html.TextBox("LastName", Html.Encode(.LastName))%>
<%= Html.ValidationMessage("LastName", "*") %>
</p>
<!-- More controls -->
</div>
</fieldset>
<%=Html.ActionLink("Search", "Search",Model.SearchCriteria)%>
<!-- The Search Results Section-->
Но это не помогло.
Я тоже пробовал:
<fieldset>
<legend>Search Criteria</legend>
<div style="float:left">
<p>
<label for="FirstName">
FirstName:</label>
<%=Html.TextBox("Model.SearchCriteria.FirstName", Html.Encode(Model.SearchCriteria.FirstName))%>
<%= Html.ValidationMessage("FirstName", "*") %>
</p>
<p>
<label for="LastName">
LastName:</label>
<%=Html.TextBox("Model.SearchCriteria.LastName", Html.Encode(Model.SearchCriteria.LastName))%>
<%= Html.ValidationMessage("LastName", "*") %>
</p>
<!-- More controls -->
</div>
</fieldset>
<%=Html.ActionLink("Search", "Search",Model.SearchCriteria)%>
<!-- The Search Results Section-->
И
<fieldset>
<legend>Search Criteria</legend>
<div style="float:left">
<p>
<label for="FirstName">
FirstName:</label>
<%=Html.TextBox("SearchCriteria.FirstName")%>
<%= Html.ValidationMessage("FirstName", "*") %>
</p>
<p>
<label for="LastName">
LastName:</label>
<%=Html.TextBox(".SearchCriteria.LastName")%>
<%= Html.ValidationMessage("LastName", "*") %>
</p>
<!-- More controls -->
</div>
</fieldset>
<%=Html.ActionLink("Search", "Search",Model.SearchCriteria)%>
<!-- The Search Results Section-->
Однако я все еще получаю пустую / новую PersonModel, переданную в метод поиска в контроллере. Я также проверил PersonSearchModel.SearchCriteria, чтобы увидеть, может ли он содержать введенные значения, но также есть новая / пустая PersonModel.
-Frinny