Передача раскрывающегося значения в аргумент Index ActionResult для обновления данных моего представления - PullRequest
0 голосов
/ 28 февраля 2019

Я новичок в C #, MVC и JavaScript.Прошу прощения за мое невежество.

Я хочу передать выбранное раскрывающееся значение из моего представления в контроллер, чтобы я мог фильтровать / обновлять сетку в своем представлении.Я могу получить значение, используя JavaScript.Но я не могу заставить это пройти.

@Html.DropDownList("HubVal", new List<SelectListItem>
          { new SelectListItem { Text = "--SELECT--", Value = "" },
            new SelectListItem { Text = "Option 1", Value = "Option 1" },
            new SelectListItem { Text = "Option 2", Value = "Option 2" },
            new SelectListItem { Text = "Option 3", Value = "Option 3" },
            new SelectListItem { Text = "Option 4", Value = "Option 4" },
            new SelectListItem { Text = "Option 4", Value = "Option 4" }},
            new { id = "HubVal", style = " width: 100%; " })

мой JavaScript:

<script>
$(function () {
    $('#HubVal').change(function () {
        var hubVal = $(this).val();

        $.ajax({        
            url: '@Url.Action("Index")' + hubVal,
            type: "POST",
            data: { hubValue: hubVal },
            success: function (data) {
                alert("Your data has been saved")
            },
            error: function (data) {
                alert("FAILED");
            }

        })
    });
});

Мой контроллер:

public ActionResult Index(string hubVal)

{

List<InventoryModel> inventoryModel = new List<InventoryModel>();
InventoryEntities inventoryDatabase = new InventoryEntities();

var customerQuery = (from myInventory in inventoryDatabase.table
                     where hubVal == myInventory.HubName
                     select new
                     {
                         hubMane = myInventory.HubName,
                         prop2 = myInventory.Prop2,
                         prop3 = myInventory.Prop3,
                         prop4 = myInventory.Prop4,
                         prop5 = myInventory.Prop5,
                         prop6 = myInventory.Prop6,
                         prop7 = myInventory.Prop7,
                         prop8 = myInventory.Prop8,
                         prop9 = myInventory.Prop9,
                         prop10 = myInventory.Prop10
                     }).ToList();


foreach (var item in customerQuery)
{
    InventoryModel oneItem = new InventoryModel
    {
        HubName = item.mx,
        prop2 = item.prop2,
        prop3 = item.prop3,
        prop4 = item.prop4,
        prop5 = item.prop5,
        prop6 = item.prop6,
        prop7 = item.prop7,
        prop8 = item.prop8,
        prop9 = item.prop9,
        prop10 = item.prop10
    };
    inventoryModel.Add(oneItem);
}

return View(inventoryModel);

}

1 Ответ

0 голосов
/ 01 марта 2019

Кажется, что вызов Ajax не может найти правильную запись в вашем контроллере.Попробуйте указать имя параметра в URL-адресе, например:

$.ajax({        
        url: '@Url.Action("Index")' + '?hubVal=' + hubVal,
        …
})

Вы можете проверить вызов Ajax с помощью инструмента разработчика браузера.Найдите вкладку сети и посмотрите, что на самом деле публикует ваш код.Также есть инструменты, которые помогают с вызовами REST, так что вы можете тестировать их отдельно от View (как Postman или любой другой вариант).

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