我在我的视图中使用了一个下拉列表:
@Html.DropDownList("ClientId", Model.AvailableClients, "-- None --")
Model.AvailableClients是一个IEnumerable,其中一个项的Selected属性设置为true。如果页面请求的查询字符串中包含“ClientId =”(如未设置)MVC忽略我选择的项目。我假设这是因为MVC试图帮助并使用查询字符串自动设置所选项目,但我不想要这个。
如何防止查询字符串值覆盖项目的选定值?
答案 0 :(得分:0)
如果您为DropDownList指定的名称已经是模型中元素的名称,则DropDownList将使用模型值自动覆盖所选值。如果让ClientId确定所选的值不是一个选项,那么我所知道的唯一解决方案是使用模型中未包含的名称重命名DropDownList。
@Html.HiddenFor(m => m.ClientId)
@Html.DropDownList("ClientIdNewName", Model.AvailableClients, "-- None --", new { onchange = "ClientId.value = this.value"})
这将使ClientId中的值保持不变为默认选择值。