Asp.net mvc 如何在MVC中更改drp选定更改事件上的标签值
我有以下代码,我想根据所选角色更改标签文本 例如,如果我选择Admin,那么在标签文本中我需要“Admin Name”等 我使用下面的代码,但我不工作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 =
<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";