尝试在选定的价格范围内创建一个显示待售汽车的查询。
在控制器中,我有以下查询。
public ActionResult index (string searchString)
{
if (!String.IsNullOrEmpty(searchString))
{
Car = Car.Where(s => s.Car.CarName.Contains(searchString));
}
MIn和Max的价格我无法实施。
public ActionResult index ( int min, int max, string searchString )
{
if (!String.IsNullOrEmpty(searchString))
{
Car = Car.Where(s => s.Car.CarName.Contains(searchString)
&& s.Price >= min && s.Price <= max).OrderBy(s => s.Price);
ViewBag.minprice = min;
ViewBag.maxprice = max;
在视图中,我有一个相应的viewbags下拉列表(Min和Max)。
我收到错误:
可选参数必须是引用类型,可空类型,或者声明为可选参数。参数名称:参数
答案 0 :(得分:0)
据推测,您仍在使用旧URL访问索引页面。这个旧的url不包含你的动作所需的min和max参数,所以它正在爆炸。此外,如果您为索引创建了自定义路由,请确保已将其重写为包含这两个新参数。
答案 1 :(得分:0)
这听起来像路由问题。您需要在默认路由之前向global.asax页面(RegisterRoutes方法)添加类似以下内容。
routes.MapRoute(
"IndexCompare", // Route name
"{controller}/{action}/{min}/{max}/{searchString}", // URL with parameters
new
{
controller = "{controller}",
action = "Index",
min = 0,
max = 0,
searchString = UrlParameter.Optional
} // Parameter defaults
);
因此,每次更改操作签名时,都需要确保有匹配它的路径。