将下拉列表设为只读
make dropdown readonly
虽然这个问题是从MVC4开始的,但我发现的答案更通用,适用于JQuery,并且可以在通用中使用
如何使下拉列表只读(限制更改值),但提交时控制器上的数据可用?
当我在编辑模式下显示for时,我想根据某些条件禁用特定的下拉列表。然而,在提交时,我需要控制器中可用的数据,这样我就可以直接使用对象来使用EF进行更新。
如果我使用禁用的属性,则数据将不可用于控制器,并且我需要编写许多其他代码来获取该属性或在更新时跳过该属性。
有没有一个可以在所有屏幕上轻松应用的快速解决方法?
不,我不想在提交时禁用它并启用它!!!
我不确定这是否是最好的解决方案,听起来像是变通方法,但您可以在表单中添加隐藏输入,其值等于下拉菜单中的选定项(已禁用)。下拉菜单将被禁用,当提交表单时,您可以在控制器中获得隐藏输入的值。
仅用代码显示@ntl还回答了MVC中禁用下拉列表的解决方法:
型号:
Public int FooId {get;set;}
控制器:
@Html.DropDownListFor(x => x.FooId, Model.Foos, new { disabled = "disabled" })
@Html.HiddenFor(x => x.FooId)
如果您必须使用javascript动态禁用下拉列表,那么只需在禁用后将下拉列表的当前选定值分配给隐藏字段即可。
现在隐藏字段'FooId'
将为您提供控制器后操作的下拉值。
我建议不要依赖未更改的数据。数据在发送到浏览器并返回到服务器后就不再可靠了。一路上很容易改变。
尤其是当你"直接"更新数据库时。
尝试不太通用(不仅仅是MVC.NET)
$.fn.extend({
readonlyddl: function () {
if (this.is('[readonly]')) {
// save current value
var val = this.val();
// remove any events that fire on change
this.unbind("change");
//reset the value when the select change
this.change(function () {
$(this).val(val);
});
}
}
});
// $("#ID").readonlyddl();
相关文章:
- 如何使用jQuery选择下拉列表的值
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- Javascript按钮下拉列表
- jQuery表单添加不适用于下拉列表
- 用每小时的差值填充数组/列表-从下拉列表中给定两个时间值
- 禁用jQuery中的下拉列表
- 如何在按钮中显示下拉列表中选定的元素
- 如何在从多选下拉列表中选择选项值时动态生成文本框
- 如何使用PHP和JS级联三个下拉列表
- 如何在使用剑道 MVVM 下拉列表时强制选择第一项
- 语义ui如何使用javascript启用或禁用下拉列表
- 无法使用PHP动态设置下拉列表中的值
- 如何根据对具有多行的先前列表的选择来动态加载下拉列表
- 下拉列表在使用z索引放置在前面后停止工作
- 将下拉列表设为只读
- 如何在多选下拉列表中使选项成为必填/只读选项
- 将下拉列表设为只读
- 当使用 jQuery 从下拉列表中选择一个值时,将输入文本设置为只读
- 如何使选择下拉列表只读和不可更改
- 将sharepoint列表下拉列表设为只读