Как передать значение DropDownList в событие jQuery OnChange?Это в настоящее время прибывает в нуль - PullRequest
0 голосов
/ 29 января 2019

Я только недавно начал изучать MVC и столкнулся с проблемой, которая может выявить фундаментальное недоразумение, которое я имею с MVC.В настоящее время у меня есть модель и ViewModel, которая является не чем иным, как списком моделей.ViewModel передается в представление, и модель является ссылкой на функцию стрелки вместо свойства фактической модели, являющейся ссылкой для функции стрелки.Я полагаю, что это может помешать мне получить фактические свойства моей модели от появления в событии jQuery OnChange для DropDownList.

То, что я первоначально достиг, - это возможность ввести набор значений для первоначального заполнения моеговыпадающие списки (который работает нормально).Теперь я хочу дать пользователю возможность выбрать элемент в раскрывающемся списке, и он должен выбрать уникальную строку в базе данных, связанную с выбранным значением в раскрывающемся списке, и заполнить другие текстовые поля, которые соответствуют выбранному значению.

До сих пор я пробовал множество различных свойств в вызове AJAX, чтобы извлечь из выбранного значения DropDownList.Нужно ли вообще удалять мой ViewModel?Если да, то как бы я изначально заполнил выпадающие списки?Модель:

public class ReturnGoodsAuthorizationModel
{
    public string RGANumber { get; set; }
    public string CustomerNumber { get; set; }
    //TODO: Add additional columns here to return the rest of the ReturnGoodsAuthorization attributes
}

Модель представления:

    public class ReturnGoodsAuthorizationViewModel
    {
        public List<ReturnGoodsAuthorizationModel> ReturnGoodsAuthorizationModel { get; set; }
    }

Вид:

                    <script type="text/javascript">
                        function TestMethod() {
                            var selected_val = $('#inputCustomerNumber').text();
                            $.ajax({
                                type: "GET",
                                url: "/Home/SelectSBU",
                                data: "id=" + selected_val,
                                success: function (data) {
                                    if (data.length > 0) {
                                        $('#inputInvoiceNumber').val(data[0].CustomerNumber);
                                    }
                                    else {
                                        $('#inputInvoiceNumber').val('');
                                    }
                                }
                            });
                        }
                    </script>
<div class="col-sm-4">
                            <label for="inputRGANumber">RGA Number</label>
                            @Html.DropDownListFor(model => model.ReturnGoodsAuthorizationModel, new SelectList(Model.ReturnGoodsAuthorizationModel,"RGANumber","RGANumber"), new { @class = "form-control", @id = "inputRGANumber", @onchange = "TestMethod(this)" })

                            @*<label for="inputRGANumber">RGA Number</label>
                            <select id="inputRGANumber" class="form-control">
                                @Html.DropDownListFor(model => model.RGANumber, new SelectListItem(model.RGANumber, "Value", "Text"))
                        </div>

Контроллер:

public class HomeController : Controller
{
private IReturnGoodsAuthorization returnGoodsAuthorization = new ReturnGoodsAuthorization();

public ActionResult ReturnGoodsAuthorization()
{
    ViewBag.Message = "Return Goods Authorization";
    ViewBag.RGANumbers = new SelectList(returnGoodsAuthorization.GetAll());

    var returnGoodsAuthorizationViewModel = new ReturnGoodsAuthorizationViewModel
    {
        ReturnGoodsAuthorizationModel = returnGoodsAuthorization.GetAll()
    };

    return View(returnGoodsAuthorizationViewModel);
}
public JsonResult SelectSBU(string customerNumber)
{
    return Json(returnGoodsAuthorization.GetAll().Where(x => x.CustomerNumber == customerNumber), JsonRequestBehavior.AllowGet);
}

} Репозиторий:

public List<ReturnGoodsAuthorizationModel> GetAll()
{
    return this._db.Query<ReturnGoodsAuthorizationModel>(sql:"dbo.usp_ReturnGoodsAuthorization_Get",commandType:CommandType.StoredProcedure).ToList();
}

1 Ответ

0 голосов
/ 30 января 2019

Похоже, у вас есть две проблемы. Как сказал @Doug F, вы вызываете функцию JavaScript, которая не принимает параметр, но вы передаете его, поэтому он не может его найти.

Во-вторых, эта строка здесь

var selected_val = $('#inputCustomerNumber').text();

Я нигде не вижу, где этот код существует в коде.Это должно быть

var selected_val = $('#inputRGANumber').text();

вместо?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...