试图让级联下拉列表在asp.net mvc中工作
本文关键字:net mvc 工作 asp 级联 下拉列表 | 更新日期: 2023-09-27 17:58:52
我正试图根据一个单独的dropdownlist的值来更改dropdownlists中的项。有人告诉我,我想要一个级联的下载列表。我遵循了asp.net mvc 4的教程,我的代码如下,但它不起作用,我看不到任何问题
以下是我的jquery/ajax代码,当用户更改父下拉列表的值时运行:
$('#paperTypeJList').change(function () {
var modelData = {
paperType: $("#paperTypeJList").text,
urgency: $("#urgencyJList").val(),
numOfPages: $("#numOfPagesJList").val()
};
var typeValue = $("#paperTypeJList").val();
var url = @Url.Action("UrgencyList", "Home", typeValue);
$.getJSON(url, function(data) {
var items = "<option>Select the Urgency</option>";
$.each(data, function(i, urgency) {
items += "<option value='" + urgency.Value + "'>" + urgency.Text + "</option>";
});
$("#urgencyJList").html(items);
});
$.ajax({
url: '@Url.Action("getNewPrice","Home")',
type: "POST",
data: modelData,
cache: false,
async: true,
success: function(response){
document.getElementById('priceLabel').innerHTML = response;
}
});
});
以下是填充相关下拉列表的方法:
public SelectList GetPaperTypeSelectList()
{
var paperTypes = PaperType.GetPaperTypes();
return new SelectList(paperTypes.ToArray(), "deadlineFormat", "typeName");
}
public ActionResult PaperTypeList()
{
if (HttpContext.Request.IsAjaxRequest())
{
return Json(GetPaperTypeSelectList(), JsonRequestBehavior.AllowGet);
}
else
{
return RedirectToAction("Index");
}
}
public ActionResult UrgencyList(string deadlineValue)
{
var urgencyList = from u in Urgency.GetUrgency()
where u.deadlineFormat.Contains(deadlineValue) == true
select u;
if (HttpContext.Request.IsAjaxRequest())
{
return Json(new SelectList(urgencyList.ToArray(), "urgencyValue", "urgencyName"), JsonRequestBehavior.AllowGet);
}
else
{
return RedirectToAction("Index");
}
}
最后但同样重要的是,这里是我的jquery代码,它为父dropdownlist创建项目:
$(function () {
var url = '@Url.Action("PaperTypeList","Home")';
$.getJSON(url, function (data) {
var items = "<option>Select the Type of Paper</option>";
$.each(data, function (i, papertype) {
items += "<option value='" + papertype.Value + "'>" + papertype.Text + "</option>";
});
$('#paperTypeJList').html(items);
});
});
将操作UrgencyList的参数名称重命名为
public ActionResult UrgencyList(string id)
MVC无法解析名称"deadlineValue",您必须映射一个新的Route,但我不建议这样做。
要了解有关路由的更多信息,请打开App_Start/RouteConfig.cs文件。在那里,您将看到"id"在默认情况下是由MVC映射的。
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",//Id is mapped by default
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);