1

タイトルが長くてすみません、これ以上短くする方法がわかりませんでした。

  • 私のコード:

私のモデル:

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# の定義や、動的オブジェクトなどの何かが不足していますか?

4

1 に答える 1