получить текстовое поле на основе идентификатора в другой таблице - PullRequest
0 голосов
/ 31 марта 2020

почему текстовое поле Имя не получает значение по идентификатору?

, так что это представление ex_op enter image description here

этот идентификатор и имя, я получаю на основе tbl_operator. Когда я ввел Id, тогда появится имя.

это контроллер ex_op

        {
            var ex_op = db.ex_op.Include(e => e.tbl_exercises).Include(e => e.tbl_operator);
            return View(ex_op.ToList());
        } ```
```  public ActionResult Create()
        {
            ex_op exop = new ex_op();

            var lasttest = db.ex_op.OrderBy(c => c.idTest).FirstOrDefault();
            if (lasttest == null)
            {
                exop.idTest = "EXOP000";
            }
            else
            {
                exop.idTest = "EXOP" + (Convert.ToInt32(lasttest.idTest.Substring(6, lasttest.idTest.Length - 6)) + 1).ToString("D3");
            }


            ViewBag.idEx = new SelectList(db.tbl_exercises, "idEx","idEx");
            ViewBag.idOp = new SelectList(db.tbl_operator, "idOp","idOp");

            return View(exop);
        } ```

and this is View ex_op
        <div class="form-group">
            <label class="control-label col-md-2">Name</label>
            <div class="control-label col-md-10">
                @Html.EditorFor(model => model.tbl_operator.nama, new { htmlAttributes = new { @class = "form-control", @readonly = "readonly" } })
                @Html.ValidationMessageFor(model => model.tbl_operator.nama, "", new { @class = "text-danger" })
            </div>
        </div> ```

Я не знаю, что я забыл в этом коде, возможно, я пропустил код, пожалуйста, помогите мне большое спасибо

1 Ответ

1 голос
/ 31 марта 2020

Чтобы автоматически заполнить поле Name после выбора ID Operator, вам нужно будет использовать события для запуска вызова вашего контроллера и возврата JSON, а затем заполнить поле.

На стороне клиента:
Проверяет изменение раскрывающегося списка идентификатора оператора и отправляет запрос на сервер.

$('#OperatorId').change(function() {
    var str = this.options[this.selectedIndex].value;

    $.ajax('@Url.Action("GetOperatorName", "Home")', {
        type: 'POST',
        dataType: 'json',
        data : {'operatorId': str }.
        success: function(data, status, jqXHR) {
            if ("success" === status) {
                document.getElementById('#OperatorName').value = data.OperatorName;
            } else {
                alert('This Operator ID is not valid. Try again!');
            }
        }
    });
});

На стороне сервера :
Получает запрос ajax, ищет оператора и возвращает объект

public async Task<JsonResult> GetOperatorName(string operatorId)
{
    var item = await Operators.Get(x => x.Id == operatorId);
    return Json(item);
}

Вам потребуется изменить поля и конечную точку и т. Д. c по мере необходимости, но это даст вам идея, как добиться того, что вам нужно.

...