Как заполнить TextBox на основе DropDownList Selection при привязке DropDownList с использованием ViewBag в ASP.NET MVC - PullRequest
0 голосов
/ 30 сентября 2019

У меня есть следующая модель:

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 , которое является Имя здесь.

Как исправить проблему с переплетом?

...