如何在MVC中更改drp选择的更改事件上的标签值

时间:2016-07-27 05:20:05

标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-4

我有以下代码,我想根据所选角色更改标签文字。

例如,如果我选择管理员,则在标签文本中我需要“管理员名称”等。

我使用下面的代码,但我没有工作。

 <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";

}

谢谢

2 个答案:

答案 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