Asp.net mvc 如何在MVC中更改drp选定更改事件上的标签值

Asp.net mvc 如何在MVC中更改drp选定更改事件上的标签值,asp.net-mvc,asp.net-mvc-3,asp.net-mvc-4,Asp.net Mvc,Asp.net Mvc 3,Asp.net Mvc 4,我有以下代码,我想根据所选角色更改标签文本 例如,如果我选择Admin,那么在标签文本中我需要“Admin Name”等 我使用下面的代码,但我不工作 <div class="editor-field"> @Html.DropDownListFor(model => model.RoleID, new SelectList(ViewBag.RoleLsit, "Id", "RoleName"), "Select Category", new { onchange =

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

例如,如果我选择Admin,那么在标签文本中我需要“Admin Name”等

我使用下面的代码,但我不工作

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

}

@DropDownListFor(model=>model.RoleID,新选择列表(ViewBag.RoleLsit,“Id”,“RoleName”),“选择类别”,新{onchange=“SelectedIndexChanged()”})
@LabelFor(model=>model.RoleName)
@EditorFor(model=>model.RoleName)
@Html.ValidationMessageFor(model=>model.RoleName)
函数SelectedIndexChanged(){
var sub=document.getElementsByName(“RoleName”);
sub.value=“所选角色名称”;
}


谢谢

如果您的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可能是一个“有趣”的选项。 您只需删除
新的{onchange=“SelectedIndexChanged()”
,然后

$('#@Html.IdFor(m => m.RoleId)').change(function() {
    $('label[for="@Html.IdFor(m => m.RoleName)"]').text($(this).children('option:selected').text());

});

函数SelectedIndexChanged(){

}
您应该使用get element by id而不是名称,因为当这个html帮助程序呈现强类型绑定属性时,这些属性将成为该控件的id。因此,在您的情况下,角色名称将是id

,不清楚您试图做什么。既然您已经有了
Ro的dropdownlist,您为什么还要输入
RoleName
leID
?我只想根据Drp选择的事件更改标签文本。上面的代码只是这个问题的演示。哪个标签文本?(你是指由
@Html.LabelFor(model=>model.RoleName)生成的标签?
)是的。我是mvc新手。有没有其他方法来更改标签文本?谢谢你的回复,这样做很简单,很难理解你想要实现什么。但是(使用jquery)
@Html.LabelFor(m=>m.RoleName,new{id=“rolenamelabel”})
$('#RoleID')。更改(函数(){$('#rolenamelabel')。文本($(this).children('option:selected').text();})
标签没有
id
当由
@Html.LabelFor
生成时,它有一个
for
属性
document.getElementsById("RoleName").InnerHtml="Role name goes here";