【问题标题】:Url.Action only render controller and action but not idUrl.Action 仅渲染控制器和操作,但不渲染 id
【发布时间】:2010-01-18 19:19:50
【问题描述】:

我需要为我正在执行的 JavaScript 搜索呈现一个 URL。不幸的是,Url.Action 不仅呈现动作,而且呈现当前 id。当当前在页面上使用带有 id 的操作时会发生这种情况。

为了说明Url.Action("List", "Org"); 将首先呈现Org/List,我可以从中附加一个要列出的组织。但是,在将位置移动到 Org/List/12345 后,Url.Action("List", "Org"); 将呈现 Org/List/12345 并附加到它会产生一个问题,我最终会得到 Org/List/12345/6789

除了Url.Action,我还能使用其他方法吗?我曾考虑过使用 JavaScript 来检查 / 的数量并删除部分字符串,但这似乎有点骇人听闻。

// appears in my Site.Master & utilizes the AutoComplete plugin for jQuery
$(document).ready(function() {
    $("input#FindOrg").autocomplete('<%= Url.Action("Find", "Org") %>', {
        minChars: 3,
        maxItemsToShow: 25
    }).result(function(evt, data, formatted) {
        var url = '<%= Url.Action("List", "Org") %>/';
        window.location.href = url + data;
    });
});

【问题讨论】:

    标签: javascript asp.net-mvc


    【解决方案1】:

    几个建议:

    如果你使用Url.Action("Find", "Org", new { id = "" })会发生什么?

    或者,尝试使用Url.Content("~/Find/Org") 手动构建网址。

    【讨论】:

    • Url.Action("Find", "Org", new { id = "" }) 成功了。应该很明显!
    • 不错。自己没有尝试过,所以我不确定,但它确实在内部使用了路由,所以我认为它可能会覆盖导致它获取当前 ID 的任何行为。
    【解决方案2】:

    您可以“作弊”并访问路由字典中的“控制器”和“操作”条目。然后,这将允许您仅构建您需要的部分 url。唯一需要注意的是,如果您更改路由模型,这些例程可能会变得不正确。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-09
      • 2010-09-25
      • 1970-01-01
      • 2015-10-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多