我创建了一个DropDownList,它从后面的代码中初始化:
代码背后:
List<SelectListItem> ddlIsActivated = new List<SelectListItem>
{
new SelectListItem
{
Text = "Activated",
Value = "0"
},
new SelectListItem
{
Text = "Not activated",
Value = "1"
}
};
ViewBag.ddlIsActivated = ddlIsActivated;
查看:
<div class="row">
<div class="form-group col-xs-3">
@Html.DropDownList("IsActivated", ViewBag.ddlIsActivated as List<SelectListItem>, "Default")
</div>
</div>
当我在加载后直接点击搜索按钮时,DropDownList将“Default”作为第一项,我的网址如下:
http://localhost:51817/Log?SearchString=&IsActivated=
是否可以指定可能不会在URL上传递具有空值的所有参数? 如果使用DropDownList,是否可以在选择“默认”时避免使用参数“IsActivated”?
答案 0 :(得分:0)
当然,一种方法是单击或激活提交按钮时,将默认值的字段设置为禁用。然后他们就不去了。
使用jQuery onsubmit的示例:
How to use jQuery to onsubmit and check if the value is 2 - 5 characters?
答案 1 :(得分:0)
您可以尝试使用单独的viewmodel,其中包含选项列表和所选选项的属性。在GET
请求操作方法中,您可以填充此列表并呈现视图,并且在POST
操作方法中,您可以在模型绑定期间排除此属性,以便只有选定的项属性才会获得界。因此,您不需要ViewBag
或routeValues
或查询字符串参数,您的网址将始终保持干净。
修改强>
你可以这样做。
public class ViewModel
{
public int SelectedId { get; set; }
public Dictionary<int,string> OptionList { get; set; }
}
然后在你看来,
@Html.DropDownListFor(model => model.SelectedId, new SelectList(Model.OptionList, "Key", "Value"), null, null)
在GET
操作方法
Dictionary<int,string> OptionList = GetOptionList(); // Populate from DB
return View(new ViewModel { OptionList = OptionList });
另外,请记住[Bind(Exclude="OptionList")]
操作方法中的POST
。