タイトルが長くてすみません、これ以上短くする方法がわかりませんでした。
- 私のコード:
私のモデル:
public class CarFilter {
public String carMake { get; set; }
public String carModel { get; set; }
public String carEdition { get; set; }
.
.
.
public String SortBy { get; set; }
}
public class CarSearch : CarFilter {
public List<Car> Car { get; set; }
}
私のコントローラー:
public ActionResult SearchResult(CarSearch search)
{
var cars = from d in db.Cars
select d;
if (Request.HttpMethod == "POST")
{
search.SortBy = "Price";
}
search.Car = new List<Car>();
search.Car.AddRange(cars);
var temp = new List<CarSearch>();
temp.Add(search);
return View(temp);
}
マイ インデックス ビュー (ユーザーが結果をフィルター処理する場所):
@model IEnumerable<Cars.Models.CarSearch>
@using (Html.BeginForm("SearchResult", "Home", FormMethod.Post)){..forms and other stuff..}
私の SearchResult ビュー (ユーザーがフィルタリングの結果を見る場所):
@model IEnumerable<Cars.Models.CarSearch>
@using (Html.BeginForm("SearchResult", "Home", FormMethod.Get))
{
@Html.Hidden("carMake")
@Html.Hidden("carModel")
@Html.Hidden("carEdition")
.
.
.
@Html.Hidden("SortBy")
<input name="SortBy" class="buttons" type="submit" value="Make"/>
- 私の目標
私がやろうとしているのは、ユーザーが [並べ替え] をクリックしたときに、結果を並べ替えるために非表示フィールドのすべての変数を SearchResult アクションに戻す必要があることです (フィルター処理された結果と同じ)。
- 結果
です: <input id="SortBy" name="SortBy" type="hidden" value=""/>
。値は null であり、渡されていませんが、carMake
や などの他のすべての非表示フィールドには値があります。しかし、私が使用するforeach
と、それは完璧に機能します。
- 質問
なぜこれがこのようなのですか?SortBy は、ビュー内の他のフィールドと同じモデル クラスにあります。唯一の違いは、SortBy が他のフィールドでインデックス ビューに入力されていないことです。代わりに、コントローラー アクションに入力されています。これについての説明は何ですか?C# の定義や、動的オブジェクトなどの何かが不足していますか?