使用 JsonResult - MVC- C# 修复 URL 到 return 下拉列表项
Fix URL to return dropdownlist items with JsonResult - MVC- C#
我的js下拉代码:
$(document).ready(function () {
$("#ddDivision").change(function () {
$.get("GetDepartment", { id: $("#ddDivision").val() }, function (data) {
$("#ddDept").empty();
$("#ddDept").append("<option value='Please Select'>Please Select</option>")
$.each(data, function (index, row) {
console.log(row);
$("#ddDept").append("<option value='" + row.Value + "'>" + row.Text + "</option>")
});
});
})
});
return列表的JsonResult:
public JsonResult GetDepartment(int id)
{
List<SelectListItem> items = new List<SelectListItem>();
//query to return items
return Json(items, JsonRequestBehavior.AllowGet);
}
我得到的错误(下拉列表未填充)但我在 F12 开发工具中得到这个:
http:///localhost/Home/EditView/GetDepartment?id=2
所以 URL 是错误的,因为它在 EditView 上,它应该 return GetDepartment 列表,但它没有。如何修复 URL ?
当我在索引视图中时,它 return 是正确的 URL,就像 Home/GetDepartment - 使用其他视图时如何解决这个问题?
还要提一下,我使用一个控制器,HomeController。
有两种方法可以解决 url 的这个问题。
方式一:
通常推荐的方法是使用 Url.Action
辅助方法,它确保为指定的控制器和操作生成正确的 url,例如:
$.get('@Url.Action("GetDepartment","Home")', { id: $("#ddDivision").val() }, function (data)
方式二:
如果 js 代码在单独的 js 文件中,那么我们所做的就是使用 html 元素的数据属性,例如:
<select id="ddlDivision" data-url='@Url.Action("GetDepartment","Home")'>
然后在 js 中,我们可以做的是使用来自数据属性的 url,如下所示:
$("#ddDivision").change(function () {
var url = $(this).data("url");
$.get(url , { id: $("#ddDivision").val() }, function (data) {
希望它能让您对任何一种方式有所了解。
我的js下拉代码:
$(document).ready(function () {
$("#ddDivision").change(function () {
$.get("GetDepartment", { id: $("#ddDivision").val() }, function (data) {
$("#ddDept").empty();
$("#ddDept").append("<option value='Please Select'>Please Select</option>")
$.each(data, function (index, row) {
console.log(row);
$("#ddDept").append("<option value='" + row.Value + "'>" + row.Text + "</option>")
});
});
})
});
return列表的JsonResult:
public JsonResult GetDepartment(int id)
{
List<SelectListItem> items = new List<SelectListItem>();
//query to return items
return Json(items, JsonRequestBehavior.AllowGet);
}
我得到的错误(下拉列表未填充)但我在 F12 开发工具中得到这个:
http:///localhost/Home/EditView/GetDepartment?id=2
所以 URL 是错误的,因为它在 EditView 上,它应该 return GetDepartment 列表,但它没有。如何修复 URL ?
当我在索引视图中时,它 return 是正确的 URL,就像 Home/GetDepartment - 使用其他视图时如何解决这个问题?
还要提一下,我使用一个控制器,HomeController。
有两种方法可以解决 url 的这个问题。
方式一:
通常推荐的方法是使用 Url.Action
辅助方法,它确保为指定的控制器和操作生成正确的 url,例如:
$.get('@Url.Action("GetDepartment","Home")', { id: $("#ddDivision").val() }, function (data)
方式二:
如果 js 代码在单独的 js 文件中,那么我们所做的就是使用 html 元素的数据属性,例如:
<select id="ddlDivision" data-url='@Url.Action("GetDepartment","Home")'>
然后在 js 中,我们可以做的是使用来自数据属性的 url,如下所示:
$("#ddDivision").change(function () {
var url = $(this).data("url");
$.get(url , { id: $("#ddDivision").val() }, function (data) {
希望它能让您对任何一种方式有所了解。