回发时没有值的下拉列表
本文关键字:下拉列表 | 更新日期: 2023-09-27 18:02:29
我已经创建了一个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>
当我在加载后直接点击搜索按钮时,下拉列表的第一项是"Default",我的URL看起来像这样:
http://localhost:51817/Log?SearchString=&IsActivated=
是否可以指定所有带有空值的参数都不能在URL上传递?在下拉列表的情况下,是否可以避免参数"IsActivated"时,"默认"被选中?
当然,一种方法是当提交按钮被点击或激活时,将默认值的字段设置为禁用。那么他们就不去邮局了。
jQuery onsubmit示例:
如何使用jQuery onsubmit并检查值是否为2 - 5个字符?
您可以尝试使用一个单独的视图模型,其中包含选项列表和所选选项的属性。在GET
请求操作方法中,您可以填充该列表并呈现视图,而在POST
操作方法中,您可以在模型绑定期间排除该属性,以便仅选中的项属性将被绑定。因此,您不需要ViewBag
或routeValues
或querystring参数,并且您的URL将始终看起来干净。
你可以这样做。
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 });
同时,记得在你的POST
动作方法中加入[Bind(Exclude="OptionList")]
。