У меня есть следующая модель:
public class Course
{
public string Code { get; set; }
public string Name { get; set; }
}
В представлении создания у меня должен быть раскрывающийся список с кодами курсов. и, изменив код курса, текстовое поле, представляющее название курса, должно быть соответствующим образом изменено.
Итак, в контроллере я реализовал следующее:
[HttpGet]
public async Task<ActionResult> Create()
{
// This calls an API method therefore to be called as less as possible
ViewBag.Courses = (await GetCourses()).ToList();
return View();
}
и в представлении у меня есть следующее:
<div class="form-group">
@Html.LabelFor(model => model.Code, new {@class = "control-label col-md-2"})
<div class="col-md-10">
@Html.DropDownListFor(model => model.Code, new SelectList(ViewBag.Courses, "Code", "Name"), "Select Course Code", new {id = "ddlCourseCode", @class = "form-control", onchange = "return get_sbu(this)"})
@Html.ValidationMessageFor(model => model.Code, "", new {@class = "text-danger"})
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.Name, new {@class = "control-label col-md-2"})
<div class="col-md-10">
@Html.EditorFor(model => model.Name, new {htmlAttributes = new {@class = "form-control", @readonly = "readonly"}})
@Html.ValidationMessageFor(model => model.Name, "", new {@class = "text-danger"})
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type="text/javascript">
function get_sbu()
{
var selectedVal = $('#ddlCourseCode').find(":selected").attr('value');
$('#Name').val(selectedVal);
}
</script>
</div>
</div>
Представление ведет себя так, как требуется, однако при отправке формы модель . Код теперь неправильно привязан к значению SelectList , которое является Имя здесь.
Как исправить проблему с переплетом?