Передаются два параметра в JSON с помощью AJAX ASP.NET запроса в MVC
Привет,
У меня есть форма MVC с тремя полями на ней. Один из них-это метка с именем "Network_UID", второй-выпадающий список с именем "UNI_UID", а третий - "Current_Bandwidth". Они определяются в представлении следующим образом:
@Html.LabelFor(model => model.Network_UID) @Html.DisplayFor(model => model.Network_UID, new { htmlAttributes = new { @class = "form-control" } }) @Html.LabelFor(model => model.UNI_UID, htmlAttributes: new { @class = "col-form-label col-md-2" }) @Html.DropDownList("UNI_UID", null, "Select One...", htmlAttributes: new { @class = "form-control" }) @Html.LabelFor(model => model.Current_Bandwidth, htmlAttributes: new { @class = "col-form-label col-md-2" }) @Html.DisplayFor(model => model.Current_Bandwidth, new { htmlAttributes = new { @class = "form-control" } })
Когда выбор сделан из выпадающего списка UNI_UID, я бы хотел, чтобы страница сделала AJAX-вызов подпрограммы в контроллере с именем "FetchBandwidth", которая вернет десятичное значение. Процедура кодируется в контроллере следующим образом:
public JsonResult FetchBandwidth(int UNIID, int NetworkID) { decimal CurBandwidth = 0; // Calculate the bandwidth based on the two parameters CurBandwidth = 10; // set it to 10 for now var data = new { Value = 0, Text = CurBandwidth.ToString() }; return Json(data, JsonRequestBehavior.AllowGet); }
В представлении у меня есть следующий сценарий:
<script type="text/javascript"> var newBW = $('#New_Bandwidth'); var bwUrl = '@Url.Action("FetchBandwidth")'; var curBW = $('#Current_Bandwidth'); $('#UNI_UID').change(function () { $.getJSON(bwUrl, { UNIID: $(this).val(), NetworkID: ('#Network_UID').val() }, function (data) { if (!data) { return; } $.each(data, function (index, item) { curBW.val(item.Text); }); }) }) </script>
Как вы можете видеть, я пытаюсь передать оба значения из поля "UNI_ID" и поля "Network_UID" в метод FetchBandwidth, но получаю ошибку "Object doesn't support property or method 'val'" из браузера. Я новичок в JQuery/AJAX, поэтому не знаю, правильно ли я вызываю FetchBandwidth или нет.
Что я уже пробовал:
Если я удаляю код "NetworkID: ('#Network_UID').val()" из скрипта и удаляю параметр из объявления FetchBandwidth в контроллере, значение UNI_UID передается правильно. В этом случае мне нужно передать оба значения. Мне интересно, может ли кто-нибудь дать какие-либо идеи по этому поводу?
Спасибо!
MadMyche
Можете ли вы добавить в самом деле Визуализированный HTML, в отличие от кода представления?