【问题标题】:Asp.Net MVC Get value from Dropdownlist to PartialViewAsp.Net MVC 从 Dropdownlist 获取值到 PartialView
【发布时间】:2019-06-22 10:21:58
【问题描述】:

在我的主页中,我有汽车的下拉列表。而且效果很好。
当我从下拉列表中选择一辆车时,我想在同一视图中从下拉列表中取回属于所选汽车的所有车型,比如说在下拉列表下。在同一视图中(在主视图中)包含所选汽车的汽车和型号的下拉列表。我尝试使用 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 创建&lt;div&gt; &lt;/div&gt; .. 但我不知道该怎么做。

这是我正在尝试使用的 javascript

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

如何在下拉列表视图下方获取此操作 GetCarModel?提前谢谢你。

【问题讨论】:

  • 我认为与其导航到您应该发送的 url 和 AJAX 请求到您的操作,这应该返回原始 json 数据或您可以在主视图上显示的部分视图。

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


【解决方案1】:

就像 Roman 说的,你应该向控件发送一个 ajax 调用,而不是导航到 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 调用的结果执行任何操作

【讨论】:

  • 感谢您的回复。在 // Do what ever Place 我只是这样编写 $("#carmodels").html(result);但仍然不起作用。你认为与行动有关吗?
  • @HelenTekie $("#carmodels").html(result) 是什么?
【解决方案2】:

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

【讨论】:

  • 感谢您的回复,我按照您写的做了,但没有任何反应。我什至将 View 添加到 Action GetCarModel,但仍然没有显示结果。我添加了 alert(carId) 并弹出汽车 ID,但在我的视图中没有看到汽车模型。我想知道它是否与我的行动结果有关。也许我的 actionResult GetCars 公式有误?
  • 我猜渲染的选择标签没有id 属性。所以我建议添加:@Html.DropDownListFor(model =&gt; model.CarId, Model.Cars, "---Select car---", new { @class = "form-control", id = "CarId" })
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-30
  • 1970-01-01
  • 2017-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多