我有以下代码,我想根据所选角色更改标签文字。
例如,如果我选择管理员,则在标签文本中我需要“管理员名称”等。
我使用下面的代码,但我没有工作。
<div class="editor-field">
@Html.DropDownListFor(model => model.RoleID, new SelectList(ViewBag.RoleLsit, "Id", "RoleName"), "Select Category", new { onchange = "SelectedIndexChanged()" })
</div>
<div>
@Html.LabelFor(model => model.RoleName)
@Html.EditorFor(model => model.RoleName)
@Html.ValidationMessageFor(model => model.RoleName)
</div>
<script type="text/javascript">
function SelectedIndexChanged() {
var sub = document.getElementsByName("RoleName");
sub.value = "Selected Role Name";
}
谢谢
答案 0 :(得分:2)
如果你的js在你的视野中,你可以使用@Html.IdFor
找到你的元素。
function SelectedIndexChanged() {
//find the label
var label = document.querySelector('label[for="@Html.IdFor(m => m.RoleName)"]');
//get the dropDown selected option text
var dropDown = document.getElementById("@Html.IdFor(m => m.RoleId)");
var selectedText = dropDown.options[dropDown.selectedIndex].text;
//set the label text
label.innerHTML=selectedText
}
顺便说一下,看一下jQuery可能是一个“有趣”的选择。
您只需删除new { onchange = "SelectedIndexChanged()"
,然后
$('#@Html.IdFor(m => m.RoleId)').change(function() {
$('label[for="@Html.IdFor(m => m.RoleName)"]').text($(this).children('option:selected').text());
});
答案 1 :(得分:0)
function SelectedIndexChanged(){
scrollViewDidZoom
} 你应该使用get by id而不是name,因为当这个html帮助器呈现强类型绑定属性时,它将成为该控件的id。所以在你的情况下,角色名称将是ID