如何在C#MVC中创建ListBoxFor只读?

时间:2017-08-30 03:19:16

标签: c# html asp.net-mvc

我在HTML页面下面有ListBoxFor,我几乎尝试了所有内容以使其只读但仍然没有运气:

@Html.ListBoxFor(m => m.SelectedLocations, Model.GetLocationsNotInBuildingList(Model.idCompany, null), (edit ? extraData : new Dictionary<string, object> { { "disabled", "" } }))

我也尝试过以下解决方案,但没有一个能够解决问题:

@Html.ListBoxFor(m => m.SelectedLocations, Model.GetLocationsNotInBuildingList(Model.idCompany, null), new { @readonly = "readonly" })

@Html.ListBoxFor(m => m.SelectedLocations, Model.GetLocationsNotInBuildingList(Model.idCompany, null), (edit ? extraData : new Dictionary<string, object> { { "readonly", "readonly" } }))

@Html.ListBoxFor(m => m.SelectedLocations, Model.GetLocationsNotInBuildingList(Model.idCompany, null), (edit ? extraData : new Dictionary<string, object> { { "disabled", "disabled" } }))

任何建议都会有所帮助。

感谢。

3 个答案:

答案 0 :(得分:1)

HTML中的readonly元素没有<select>属性,因为它不需要一个:用户无法直接编辑<select>元素的内容:他们只能更改其内容选择。

如果您想要一个列表框,用户无法更改选择,然后使用<ul><ol>呈现普通HTML列表,并使用自定义样式来限制高度并允许滚动:

剃刀:

<ul class="read-only-listbox">
@foreach(ListItem item in listItems) {
    <li>@item.Text</li>
}
</ul>

CSS:

ul.read-only-listbox {
    height: 500px;
    list-style: none;
    overflow: auto;
    border: 1px inset #ccc;
    background: white;
} 
ul.read-only-listbox li {
    display: block;
}

答案 1 :(得分:0)

它为我工作

@Html.ListBoxFor(m => m.SelectedCities, Model.Cities, new {@disabled="disabled" });

答案 2 :(得分:0)

@Html.ListBoxFor(m => m.SelectedCities, Model.Cities, new {@disabled="disabled" });

它对我有用。非常感谢你。