Asp.Net MVC 从 Dropdownlist 获取值到 PartialView
Asp.Net MVC Get value from Dropdownlist to PartialView
在我的主页中,我有汽车下拉列表。而且效果很好。
当我 select 来自 Dropdownlist 的一辆车时,我想在同一视图中从 Dropdownlist 取回属于 selected Car 的所有车型,比如说在 Dropdownlist 下。在同一视图(在主视图中)中包含 selected 汽车的汽车和模型的 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>
在下拉列表下方,我想获取 selected 汽车的所有车型
但我想我必须用 Id 或 span 创建 <div> </div>
..但我不确定如何在这里做。
这里是 javascript 我正在尝试使用
$("#CarId").change(function () {
var carId = $(this).val();
if (carId) {
window.location = "/an/GetCarModel?carId=" + carId;
}
return false;
});
如何在下拉列表视图下方获取 GetCarModel 操作?提前谢谢你。
如果您想在同一页面上查看结果,则需要使用 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);
});
}
});
正如 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 调用的结果执行任何操作
在我的主页中,我有汽车下拉列表。而且效果很好。
当我 select 来自 Dropdownlist 的一辆车时,我想在同一视图中从 Dropdownlist 取回属于 selected Car 的所有车型,比如说在 Dropdownlist 下。在同一视图(在主视图中)中包含 selected 汽车的汽车和模型的 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>
在下拉列表下方,我想获取 selected 汽车的所有车型
但我想我必须用 Id 或 span 创建 <div> </div>
..但我不确定如何在这里做。
这里是 javascript 我正在尝试使用
$("#CarId").change(function () {
var carId = $(this).val();
if (carId) {
window.location = "/an/GetCarModel?carId=" + carId;
}
return false;
});
如何在下拉列表视图下方获取 GetCarModel 操作?提前谢谢你。
如果您想在同一页面上查看结果,则需要使用 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);
});
}
});
正如 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 调用的结果执行任何操作