c# mvc关于@Html. DropDownListFor() 或@Html.EnumDropDownListFor() 设置disabled="disabled" post(代

Posted signx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c# mvc关于@Html. DropDownListFor() 或@Html.EnumDropDownListFor() 设置disabled="disabled" post(代相关的知识,希望对你有一定的参考价值。

问题记录:

问题描述:C# MVC @html. DropDownListFor() @Html.EnumDropDownListFor() 禁止不可选

Post 提交表单不会绑定值问题(赋不到值)。

问题:想要在添加数据的时候要把指定的字段通过其他的方式动态赋值,让该元素的不能被选择。

这边假设要赋值属性为TestType

@Html.DropDownListFor(m=>m.TestType,....,newdisabled="disabled")

@Html.EnumDropDownListFor(m=>m.TestType,....,newdisabled="disabled")

 

说明:

试错方法一:本来是想可以直接给htmlAttribute 中添加一个 disabled=”disabled”, 就可以直接不能选,但是出现问题就是 post提交的时候值绑定不到Model上

试错方法二:@readyOnly=true 但是下拉框还是可以下拉 所以也没达到自己的效果。

试错方法三:也试了在前面或后面加一个@Html. HiddenFor(m=>m.TemplateType) 把这个元素加到前面是可以赋值了,但是显示出来的@Html. DropDownListFor() 或@Html.EnumDropDownListFor()赋值不到 

 

说明:原先试了好几种方式都不能赋值,然后在Stackoverflow 中看到了一个解决方案

https://stackoverflow.com/questions/1636103/html-dropdownlist-disabled-readonly#

解决方法:通过@readOnly=true和css 来处理了这个问题

步骤一:将类型属性设置为@readOnly=true

步骤二:给这个值设定为:pointer-events:none

这句的作用是 元素永远不会成为鼠标事件的target

技术图片

 

最后:如果你有其他的解决方案可以在评论区分享一下。

 

以上是关于c# mvc关于@Html. DropDownListFor() 或@Html.EnumDropDownListFor() 设置disabled="disabled" post(代的主要内容,如果未能解决你的问题,请参考以下文章

在视图中显示相关表中的值

如何在 C# 代码中使用 MVC 3 @Html.ActionLink

C# MVC5 @Html.EnumDropDownListFor 在“回发”上丢失选择

使用 Html 助手 HiddenFor C# MVC 将模型添加到模型中

C# MVC CMS - 自定义远程验证

c# mvc如何获取xml文件