私はこの質問をしました、私は私の答えを得ませんでした。それで私はこれについてもっと多くの研究をしました、そしてそれでもこれに対する適切な良い答えを見つけることができませんでした。
私のコントローラー(短縮):
public ActionResult SearchResult(String sortOrder, String carMake, String carModel)
{
var cars = from d in db.Cars
select d;
if (!String.IsNullOrEmpty(carMake))
{
if (!carMake.Equals("All Makes"))
{
cars = cars.Where(x => x.Make == carMake);
}
}
if (!String.IsNullOrEmpty(carModel))
{
if (!carModel.Equals("All Models"))
{
cars = cars.Where(x => x.Model == carModel);
}
}
switch (sortOrder)
{
case "Model":
cars = cars.OrderBy(s => s.Model);
break;
default:
cars = cars.OrderBy(s => s.Make);
break;
}
return View(cars);
}
私のインデックスビュー(短縮-これは、ユーザーがさまざまな入力で車をフィルタリングする場所です):
@model IEnumerable<Cars.Models.Car>
@using (Html.BeginForm("SearchResult", "Home", FormMethod.Post))
{
<label>Make</label>
<select id="MakeID" name="carMake">
<option>All Makes</option>
</select>
<label>Model</label>
<select id="ModelID" name="carModel">
<option>All Models</option>
</select>
<button type="submit" name="submit" value="search" id="SubmitID">Search</button>
}
検索結果を表示するMySearchResultビュー(短縮):
@model IEnumerable<Cars.Models.Car>
<table>
@foreach (var item in Model)
{
<tr>
<td>
<label>Make:</label>
<p>@Html.DisplayFor(modelItem => item.Make)</p>
</td>
<td>
<label>Model:</label>
<p>@Html.DisplayFor(modelItem => item.Model)</p>
</td>
</tr>
}
</table>
<a href="@Url.Action("SearchResult", "Home", new { sortOrder= "Model"})">Model</a>
私の目標:ユーザーが[モデルで並べ替え]をクリックすると、ページは結果をモデルで並べ替えます。
問題:ソートバイがクリック
SearchResult
されると、検索値がSearchResultビューに存在しないため、アクションのすべてのパラメーターがnullになります。質問:これを修正するにはどうすればよいですか?
ありがとう、アミン
更新:どんな例でも深く感謝します。コントローラとビューの間でデータを送受信するプロセス全体をバックエンドで停止します。