0

我正在编写一个 MVC 4 应用程序,我有一个 javascript 函数来支持几个级联下拉菜单。javascript 在一个 js 文件中,我正在尝试将它用于创建和编辑视图。它适用于创建视图,但不适用于我的编辑视图。我使用 IE 的开发人员工具查看了网络流量,并注意到来自 create 调用的 url 是正确的,Controller/MyActionMethod。编辑调用的 url 是控制器/编辑/控制器/MyActionMethod。

我目前正在使用默认路由配置,它似乎运行良好,所以我没有深入研究它。

关于为什么在编辑案例中将控制器/编辑/预先附加到 url 的任何想法?知道如何解决吗?

如果它有用,我会发布代码,但我认为这可能是我对 url 和路由不了解的东西。

谢谢

这是javascript

$(function () {
    $.getJSON("ProfessionTypeList", function (data) {
        var items = "<option>---------------------</option>";
        $.each(data, function (i, professionType) {
            items += "<option value='" + professionType.Value + "'>" + professionType.Text + "</option>";
    });
    $("#ProfessionTypeId").html(items);
   })
});
4

2 回答 2

0

以下行

$.getJSON("ProfessionTypeList",

将生成表单的 URL

http://domain.com/Controller/ActionName/ProfessionTypeList

即它将附加ProfessionTypeList在 URL 的末尾。

您应该尝试使显式 URL 将完成路径。在CSHTML文件中,您可以使用@Url.Action("ProfessionTypeList")

于 2013-09-04T16:15:00.477 回答
0

谢谢彗星!

以下是我所做的一些细节,以防它帮助别人。我确信有一种不使用隐藏字段的更简洁的方法。不知道这是否重要。

我创建了以 url 作为值的隐藏字段。

    @Html.Hidden("ProfessionTypeListUrl",@Url.Action("ProfessionTypeList", "IsolatedPersonDetailAtEvent"), new { id = "ProfessionTypeListUrl" })
    @Html.Hidden("ProfessionSubTypeListUrl",@Url.Action("ProfessionSubTypeList", "IsolatedPersonDetailAtEvent"), new { id = "ProfessionSubTypeListUrl" })

然后我在我的js中查找了它们。

  $(function () {

        var actionUrl = $("#ProfessionTypeListUrl").attr('value');

        $.getJSON(actionUrl, function (data) {
            var items = "<option>---------------------</option>";
            $.each(data, function (i, professionType) {
                items += "<option value='" + professionType.Value + "'>" + professionType.Text + "</option>";
            });
            $("#ProfessionTypeId").html(items);
        })
    });


    $("#ProfessionTypeId").change(function ()
    {
        **var actionUrl = $("#ProfessionSubTypeListUrl").attr('value');**


        $.getJSON(actionUrl+"/" + $("#ProfessionTypeId > option:selected").attr("value"), function (data) {
            var items = "<option>---------------------</option>";
            $.each(data, function (i, subType) {
                items += "<option value='" + subType.Value + "'>" + subType.Text + "</option>";
            });
            $("#ProfessionSubTypeId").html(items);
        });
    });
</script>
于 2013-09-04T17:56:38.813 回答