Я создал строго типизированное представление в проекте ASP.Net MVC, над которым я работаю. Это просто индексная страница, которая перечисляет содержимое таблицы SQL в сетке.
Теперь я хочу добавить функциональность для фильтрации этого списка. Я попытался сделать это, создав форму в представлении с выпадающим списком, содержащим значения, по которым вы можете фильтровать. Идея состоит в том, что когда пользователь отправляет эту форму, он запускает метод Post index для контроллеров, который захватывает выбранное значение из выпадающего списка из FormCollection, переданного в метод.
Например, мои 2 метода индекса выглядят так
public ActionResult Index()
{
DevAdminEntities db = new DevAdminEntities();
ViewData["StatusDropDown"] = new SelectList(db.TaskStatuses, "TaskStatusId", "StatusName");
return View(db.Tasks);
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Index(FormCollection formValues)
{
DevAdminEntities db = new DevAdminEntities();
ViewData["StatusDropDown"] = new SelectList(db.TaskStatuses, "TaskStatusId", "StatusName");
return View(from t in db.Tasks where t.Projects.ProjectId == int.Parse(Request.Form["StatusDropDown"]) new { t, t.Projects});
}
Страница отображается нормально, когда она загружается в нефильтрованном виде, но когда я нажимаю кнопку отправки, чтобы применить фильтр, я получаю следующую ошибку
" Элемент модели, переданный в словарь, имеет тип 'System.Data.Objects.ObjectQuery 1[System.Int32]' but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable
1 [DevAdmin.Models.Tasks]'. "
Вид выглядит так
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<DevAdmin.Models.Tasks>>" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
<title>Index</title>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<h2>Tasks</h2>
<%= Html.ValidationSummary() %>
<% using (Html.BeginForm()) {%>
<fieldset>
<legend>Filters</legend>
<p>
<%= Html.DropDownList("StatusDropDown") %>
<input type="submit" value="Filter" />
</p>
</fieldset>
<% } %>
<table>
<tr>
<th></th>
<th>
TaskId
</th>
<th>
Subject
</th>
<th>
Description
</th>
</tr>
<% foreach (var item in Model) { %>
<tr>
<td>
<%= Html.ActionLink("Edit", "Edit", new { id=item.TaskId }) %> |
<%= Html.ActionLink("Details", "Details", new { id = item.TaskId })%>
</td>
<td>
<%= Html.Encode(item.TaskId) %>
</td>
<td>
<%= Html.Encode(item.Subject) %>
</td>
<td>
<%= Html.Encode(item.Description) %>
</td>
</tr>
<% } %>
</table>
<p>
<%= Html.ActionLink("Create New", "Create") %>
</p>
</asp:Content>
Есть идеи, что я делаю неправильно?