我已經有三個功能ASP.NET MVC應用程序。從數據可以列表: - 搜索 - 顯示結果 - 而從下拉列表ASP.NET MVC應用程序搜索,排序和過濾
選擇但它不能正常工作還沒有。當我在搜索後對搜索結果進行排序時,整個列表都會被排序,而不僅僅是搜索結果。我想查看從下拉列表中選擇的項目。但是,當我在下拉列表中選擇某項內容時,沒有任何反應。
控制器:
public class AddressController : Controller
{
private ApplicationDbContext db = new ApplicationDbContext();
// GET: Address
public ActionResult Index(string address, string sortOrder, string searchString)
{
var AddressList = new List<string>();
var AddressQry = from d in db.Adres
orderby d.Address
select d.Address;
AddressList.AddRange(AddressQry.Distinct());
ViewBag.address = new SelectList(AddressList);
ViewBag.AddressSortParm = String.IsNullOrEmpty(sortOrder) ? "address_desc" : "";
ViewBag.DateSortParm = sortOrder == "Date" ? "date_desc" : "Date";
ViewBag.LongitudeSortParm = sortOrder == "Longitude" ? "longitude_desc" : "Longitude";
ViewBag.LatitudeSortParm = sortOrder == "Latitude" ? "latitude_desc" : "Latitude";
var addresses = from s in db.Adres
select s;
if (!String.IsNullOrEmpty(searchString))
{
addresses = addresses.Where(s => s.Address.Contains(searchString));
}
if (!String.IsNullOrEmpty(address))
{
addresses = addresses.Where(s => s.Address == address);
}
switch (sortOrder)
{
case "address_desc":
addresses = addresses.OrderByDescending(s => s.Address);
break;
case "Date":
addresses = addresses.OrderBy(s => s.Date);
break;
case "date_desc":
addresses = addresses.OrderByDescending(s => s.Date);
break;
case "Longitude":
addresses = addresses.OrderBy(s => s.Longitude);
break;
case "longitude_desc":
addresses = addresses.OrderByDescending(s => s.Longitude);
break;
case "Latitude":
addresses = addresses.OrderBy(s => s.Latitude);
break;
case "latitude_desc":
addresses = addresses.OrderByDescending(s => s.Latitude);
break;
default:
addresses = addresses.OrderBy(s => s.Address);
break;
}
return View(addresses);
}
}
視圖
@model IEnumerable<Keuzevak.Models.Adres>
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Addresses</h2>
<p>
@Html.DropDownList("address", "All")
</p>
@using (Html.BeginForm())
{
<p>
Search address: @Html.TextBox("SearchString")
<input type="submit" value="Search" class="btn btn-primary" />
</p>
}
<table>
<tr>
<th>
@Html.ActionLink("Date", "Index", new {sortOrder = ViewBag.DateSortParm})
</th>
<th>
@Html.ActionLink("Longitude", "Index", new {sortOrder = ViewBag.LongitudeSortParm})
</th>
<th>
@Html.ActionLink("Latitude", "Index", new {sortOrder = ViewBag.LatitudeSortParm})
</th>
<th>
@Html.ActionLink("Address", "Index", new {sortOrder = ViewBag.AddressSortParm})
</th>
<th></th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Date)
</td>
<td>
@Html.DisplayFor(modelItem => item.Longitude)
</td>
<td>
@Html.DisplayFor(modelItem => item.Latitude)
</td>
<td>
@Html.DisplayFor(modelItem => item.Address)
</td>
</tr>
}
做你的行動methord更是創下同時給予請求 –
你只形成回發searchString'的'值(address'的'值和'sortOrder'會'null')而你只鏈接後回sortOrder的值和其他值爲null –