我试图在触发on change事件后将下拉列表呈现为diabled。我从httppost上的控制器传递一个viewbag中的禁用标志。但是,viewbag的名称显示在hh标志中,而不仅仅是值。请参阅下面的代码:
@Html.DropDownList("dropdown", ViewData["dropdown"] as IEnumerable<SelectListItem>, "--Select--", new { @class = "form-control", id = "dropbox", onchange = "this.form.submit();", ViewBag.propertydisable})
在我的控制器中
ViewBag.propertydisable = "disabled";
它如何呈现html:
<select class="form-control" id="dropbox" name="searchparams" propertydisable="disabled" onchange="this.form.submit();" >
<option value="">--Select Budget holder--</option>
<option selected="selected" value="option1">option1</option>
<option value="opt">option2</option>
</select>
我希望它如何渲染
<select class="form-control" id="dropbox" name="searchparams" disabled onchange="this.form.submit();">
<option value="">--Select Budget holder--</option>
<option selected="selected" value="option1">option1</option>
<option value="opt">option2</option>
</select>
一旦回发完成,最终结果将被禁用。
答案 0 :(得分:3)
您需要根据ViewBag
属性
@{ var attributes = ViewBag.propertydisable ? (object)new { @class = "form-control", disabled = "disabled"} : (object)new { @class = "form-control"}; }
@Html.DropDownList("dropdown", ViewData["dropdown"] as IEnumerable<SelectListItem>, "--Select--", attributes)
请注意,您应将ViewBag
属性设置为
ViewBag.propertydisable = true;
附注:使用Unobtrusive Javascript而不是用行为污染您的标记。不确定为什么要将id
属性从默认"dropdown"
更改为"dropbox"
,但以下假设您删除了id="dropbox"
属性
$('#dropdown').change(function() {
$('#form').submit();
});
答案 1 :(得分:1)
首先,而不是内联脚本使用不显眼的js。而且你也使用了错误的重载。
以下代码应该有效:
@Html.DropDownList("dropdown",yourlist,new { @class = "form-control", id = "dropbox",disabled=ViewBag.propertydisable})
更新
$(document).ready(function () {
$('#dropdown').change(function() {
$('#form').submit();
});
答案 2 :(得分:0)
对我来说似乎很苛刻,但你可以通过将属性改为bool来有条件地渲染元素:
@{
if(Viewbag.propertydisable)
{
Html.DropDownList("dropdown",
ViewData["dropdown"] as IEnumerable<SelectListItem>,
"--Select--",
new { @class = "form-control",
id = "dropbox",
onchange = "this.form.submit();",
disabled = "disabled"});
}
else
{
Html.DropDownList("dropdown",
ViewData["dropdown"] as IEnumerable<SelectListItem>,
"--Select--",
new { @class = "form-control",
id = "dropbox",
onchange = "this.form.submit();"});
}
}