Asp.Net MVC从Dropdownlist到PartialView获取价值

时间:2019-06-18 09:35:59

标签: c# asp.net-mvc html.dropdownlistfor

在我的主页上,有汽车下拉列表。而且效果很好。
当我从下拉列表中选择一辆汽车时,我想在同一视图中从下拉列表中检索属于所选汽车的所有汽车模型,在下拉列表中说。在同一视图中(在主视图中)具有选定汽车的汽车和模型的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>

在下拉列表下面,我想获取选定汽车的所有车型 但是我认为我必须使用ID或span ..创建<div> </div>,但是我不确定如何在此处进行操作。

这是我要使用的javascript

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

如何在Dropdownlist视图下获得此GetCarModel操作?预先谢谢你。

2 个答案:

答案 0 :(得分:0)

如果要在同一页面上查看结果,则需要使用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);
        });
   }
});

答案 1 :(得分:0)

就像罗曼所说的那样,您应该导航至该控件,而不是导航至该URL。

首先,在您的下拉列表中添加一个ID。

第二,在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调用的结果做任何事情