MVC5 @ Html.EditorFor: проблема второго атрибута - PullRequest
0 голосов
/ 20 февраля 2019

У меня небольшое разочарование по поводу @ html.EditorFor в MVC5, в «Create View»

По сути, у меня есть выпадающий список, из которого пользователь выбирает информацию.При изменении значение раскрывающегося списка передается (через javascript) в относительный @ Html.EditorFor, который сохраняется в таблице при отправке представления.

Это мой код представления для DropDown (сам раскрывающийся список заполняется контроллером индекса и отлично работает)

@Html.DropDownList("testList", null, "Select Delivery Unit", new { htmlAttributes = new { @class = "form-control" } })

Это мой код представления для EditorFor:

 @Html.EditorFor(model => model.DeliveryUnitID, null, "myunit", new { htmlAttributes = new { @class = "form-control" } })

Хотя JavaScript работает должным образом, я включу и этот код, на всякий случай, если он понадобится:

    <script type="text/javascript">
    $(function () {
        $("[name='testList']").change(function () {
            $("#myunit").val($(this).val());

        });
    });

</script>

Пользователь выбирает параметр из выпадающего списка "testlist", и этозначение передается в «myunit» с предоставленным javascript.Это все работает очень хорошо.Но когда я сохраняю данные.,,это поле всегда пусто.Это не захват значения.

Я считаю, что проблема со вторым атрибутом (ноль).

Что мне нужно изменить, чтобы эта работа работала должным образом?

Обновление: вот код создания представления контроллера

        public ActionResult Create()
    {

        List<SelectListItem> testList = db.ICS_Units.Select(x => new SelectListItem { Value = x.DeliveryUnitID.ToString(), Text = x.DeliveryUnit, Selected = false }).DistinctBy(p => p.Text).ToList();
        ViewBag.testList = new SelectList(testList, "Value", "Text");

        return View();
    }

    // POST: InternalOrders/Create
    // To protect from overposting attacks, please enable the specific properties you want to bind to, for 
    // more details see http://go.microsoft.com/fwlink/?LinkId=317598.
    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create([Bind(Include = "TransID,SuppliesID,OriginalDate,TransType,LastUpdatedBy,Contact,OpenClosed,CurrentStatus,CurrentStatusDate,RequsitionNumber,PONumber,DeliveryMonth,DeliveryYear,UnitsOrdered,Emergency,Comments,DeliveryUnitID")] ICS_Transactions iCS_Transactions)
    {
        if (ModelState.IsValid)
        {
            db.ICS_Transactions.Add(iCS_Transactions);
            db.SaveChanges();
            return RedirectToAction("Index");
        }

        return View(iCS_Transactions);
    }

1 Ответ

0 голосов
/ 20 февраля 2019

Тот факт, что вы вводите HtmlFieldName в свой редактор полей, меняет разметку по умолчанию и ваши опубликованные данные.Оставьте имя поля в покое и обновите свой jquery, чтобы он соответствовал имени поля модели:

$('#DeliveryUnitID').val($(this).val());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...