修复 URL 以返回带有 JsonResult 的下拉列表项 - MVC- C#
Posted
技术标签:
【中文标题】修复 URL 以返回带有 JsonResult 的下拉列表项 - MVC- C#【英文标题】:Fix URL to return dropdownlist items with JsonResult - MVC- C# 【发布时间】:2021-11-01 18:56:45 【问题描述】:我的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>")
);
);
)
);
返回列表的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 上,它应该返回 GetDepartment 列表,但它没有。如何修复网址?
当我在索引视图上时,它会返回正确的 URL,例如 Home/GetDepartment - 在使用另一个视图时如何解决这个问题?
另外提一下,我使用一个控制器,HomeController。
【问题讨论】:
使用完整的 url 而不是只使用方法名 【参考方案1】:有两种方法可以解决这个urls问题。
方式一:
通常推荐的方法是使用Url.Action
helper 方法,该方法确保为指定的控制器和操作生成正确的 url,例如:
$.get('@Url.Action("GetDepartment","Home")', id: $("#ddDivision").val() , function (data)
方式二:
如果 js 代码在单独的 js 文件中,那么我们所做的就是使用 html 元素的数据属性,例如:
<select id="ddlDivision" data-url='@Url.Action("GetDepartment","Home")'>
然后在 js 中,我们可以做的是使用来自 data- 属性的 url,如下所示:
$("#ddDivision").change(function ()
var url = $(this).data("url");
$.get(url , id: $("#ddDivision").val() , function (data)
希望它能让您了解任何一种方式。
【讨论】:
谢谢,这工作 100%。我学到了一些新东西。 $.get('@Url.Action("GetDepartment","Home")' - 不知道这是要走的路。 @someone13 它建议使用方法而不是使用魔术字符串,并且在 iis 服务器上部署时可以避免预期的失败是子目录 嗨 Ehsan - 它可以在 localhost 上运行,但是当我将它发布到 IIS 服务器时不行?这是否保持不变:$.get('@Url.Action("GetDepartment","Home")', id: $("#ddDivision").val() , function (data) 是的,它也应该适用于已发布版本,请检查为已发布版本浏览器调试工具生成的 url 是什么 没关系,我使用了不正确的下拉 ID。有用。再次感谢!以上是关于修复 URL 以返回带有 JsonResult 的下拉列表项 - MVC- C#的主要内容,如果未能解决你的问题,请参考以下文章
带有 JObject 元素的 C# JsonResult 返回空数组
.net mvc $.ajax url一直错误,跳转不到相应的返回JsonResult的方法
简单的 JsonResult 在 Jquery ajax 方法上返回 parsererror