Я играю с приложением ASP.NET MVC, и у меня возникла небольшая проблема. Я довольно новичок в ASP.NET MVC и едва понимаю основы, чтобы заставить все работать на этом этапе.
У меня есть PersonModel, PersonController и куча представлений, которые позволяют пользователю добавлять нового человека, редактировать человека и искать людей.
Я не использую базу данных в бэкэнде. Все, что я делаю, зависит от внешней DLL, которая возвращает структуры "person" (которые я превращаю в 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
Теперь представление поиска привязывается к этой модели PersonSearchModel, и у меня есть 2 раздела... раздел, в котором пользователь может указать критерии поиска, и раздел, в котором отображаются результаты поиска.
У меня возникла проблема с привязкой PersonSearchModel.SearchCriteria к элементам управления, используемым для отображения/сбора критериев поиска человека.
Я не могу получить критерии поиска.
Это то, что я считаю критериями поиска:
<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. Он не содержит данных, которые ввел пользователь.
Что я здесь делаю неправильно?
********** Редактировать ********** Я попытался изменить вид, чтобы привязать его по-другому. Я удалил ВБ "С":
<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.
-Фринни