Asp.Net MVC Получить значение из выпадающего списка в PartialView - PullRequest
0 голосов
/ 18 июня 2019

На моей главной странице есть выпадающий список автомобилей. И это отлично работает.
И когда я выбираю одну машину из выпадающего списка, я хочу вернуть все модели автомобилей, принадлежащие выбранной машине, из выпадающего списка в том же виде, скажем, под Dropdownlist. DropDownlist с автомобилями и моделями выбранных автомобилей в том же представлении (в главном представлении). Я пытался с PartialView, но я не очень хорошо, когда речь идет о PartielView и HTML-код Это мое действие, чтобы получить CarModels, и я думаю, что это должно быть как PartialView

[HttpGet]
public ActionResult GetCarModel(int? carId)
{
    List<CarModelVW> listOfCarModel;

    using (Db db = new Db())
    {
        listOfCarModel = db.CarModel.ToArray()
                        .Where(x => carId == null || carId == 0 || x.carId == carId)
                        .Select(x => new CarModelVW(x))
                        .ToList();

    }
    return View(listOfCarModel);
}

В моем главном представлении с DropDownlist

<div class="form-group">
    <label class="control-label col-md-2" for="HasSidebar"> Car </label>
    <div class="col-md-10">
        @Html.DropDownListFor(model => model.CarId, Model.Cars, "---Select car---", new { @class = "form-control" })
        @Html.ValidationMessageFor(model => model.CarId, "", new { @class = "text-danger" })
    </div>
</div>

И здесь, под Dropdownlist, я хочу получить все модели автомобилей выбранного автомобиля. Но я думаю, что мне нужно создать <div> </div> с Id или span ... но я не уверен, как это сделать.

А вот javascript, который я пытаюсь использовать

$("#CarId").change(function () {        
    var carId = $(this).val();
    if (carId) {
        window.location = "/an/GetCarModel?carId=" + carId;
    }
    return false; 
});

Как мне получить это действие GetCarModel в представлении Dropdownlist? Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 18 июня 2019

Точно так же, как сказал Роман, вместо того, чтобы перейти к URL-адресу, вы должны отправить ajax-вызов элементу управления.

Прежде всего, добавьте идентификатор в выпадающий список.

Во-вторых,в функцию Onchange добавьте вызов ajax для получения машин:

var dropdownval = $("#//Id of dropdown").val();
var json = '{Id: ' + dropdownval + '}';

$.ajax({
    url:'@Url.Action("GetCarModel", "//The controller")',
    type:'POST',
    data: json,
    contentType:'Application/json',
    success:function(result){
        //Do whatever
    }
})

Затем вы можете делать все, что с результатом, который вы передаете обратно вызову ajax

0 голосов
/ 18 июня 2019

Если вы хотите просмотреть результаты на той же странице, то вам нужно использовать Ajax.

добавьте этот тег Div в главном окне, где вы хотите отобразить результаты:

<div id="carmodels"></div>

Измените функцию jquery, как показано ниже:

$("#CarId").change(function () {
  var carId = $(this).val();
  if (carId) 
    {
        $.get("/an/GetCarModel?carId=" + carId, function(data){
        $("#carmodels").html(data);
        });
   }
});
...