对不起,标题太长了,我不知道如何使它更短。
- 我的代码:
我的模型:
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"/>
- 我的目标
我想要做的是当用户点击排序时 Make 它必须将隐藏字段中的所有变量返回到 SearchResult 操作才能对结果进行排序(相同的过滤结果)。
- 结果
是:<input id="SortBy" name="SortBy" type="hidden" value=""/>
。该值为 null 并且没有被传递,但所有其他隐藏字段(例如carMake
等)都有值。但是当我使用它时,foreach
它完美无缺。
- 问题
为什么会这样?SortBy 与视图中的其他字段位于同一模型类中。唯一的区别是 SortBy 没有在 Index 视图中填充其他字段,而是在控制器操作中填充。对此有何解释?我是否缺少任何 C# 定义或诸如动态对象之类的东西?