【问题标题】:How do I Call a URL Action from Javascript?如何从 Javascript 调用 URL 操作?
【发布时间】:2015-06-19 07:43:58
【问题描述】:

我在做:

var url = '@Url.Action("Attachments", "Transactions")';
url += '/?id=' + 3201;
$("#attachments").load(url);

但是,在加载时它什么也不做。我错过了什么吗?

我基本上想调用类似的东西:

@{Html.RenderAction("Attachments", "Transactions", new { id = 3301 });}

我在控制台上收到以下错误:

http://server:54137/Transactions/@Url.Action(%22Attachments%22,

【问题讨论】:

  • 你想做什么? .load() - 从服务器加载数据并将返回的 HTML 放入匹配的元素中 api.jquery.com/load
  • var url = ... 之后立即添加一个console.log(url); 语句并检查它返回的内容。
  • 你的代码对我来说很好用。我使用了console.log(url); 并打印了 - /Transactions/Attachments/?id=3201。所以请检查你代码的其他部分。
  • 注意它应该是url += '?id=' + 3201;(没有正斜杠)
  • 你在哪里“做”javascript?文件名是什么?它是否以 .js 结尾?

标签: javascript c# asp.net asp.net-mvc razor


【解决方案1】:

您必须使用外部 JavaScript 文件,该文件不会解析您的 razor 语法,因此您的控制台中出现 @Url.Action(%22Attachments%22. 错误。

你有几个选择:

  1. 创建一个JavaScript函数并传入url:

    function loadUrl(url) { $("#attachments").load(url); }

然后在你的剃须刀中调用它的脚本标签:

loadUrl(@Url.Action("Attachments", "Transactions", new { id = @Model.Id })
  1. 将 url 作为数据添加到 html 元素,并使用 data 方法从 JavaScript 中读取。

在你的剃刀标记中添加:

<button data-url="@Url.Action("Attachments", "Transactions", new { id = @Model.Id })" />

从您的 JavaScript 事件处理程序中读取:

var url = $(this).data('url');
$("#attachments").load(url);

我更喜欢第二种选择。

【讨论】:

  • 由于某种原因,它似乎不起作用?当我尝试选项二时,我得到了同样的错误。我已将数据值附加到选项选择列表中,并且能够正确获取 url。然后当我尝试加载它时,它仍然给我以下错误:
  • @SamIAm 嗨,您需要确保从剃刀文件(即.cshtml)中调用@Url.Action,否则将无法解决。如果您从外部 .js 文件调用它,它只会将其视为 javascript 并解析为 @Url.Action 而不是操作路径,即 /transactions/attachments
  • @hutchonoid 我们如何在 .js 文件中使用它?
  • 嗨@Sebastian,是的,你可以。您有几个选择,创建一个以 url 作为参数的函数并通过即 loadThisUrls(@Url.Action....) 将其传递以解析路径,或者将其按原样捆绑并如上所示解析 url 而无需传递它。跨度>
【解决方案2】:

您需要使用Html.Raw查看下方

var url = "@Html.Raw(Url.Action("Attachments", "Transactions"))";
url += '/?id=' + 3201;
$("#attachments").load(url);

【讨论】:

  • 您不需要使用Html.Raw() - '@Url.Action("Attachments", "Transactions")'; 将返回"/Transactions/Attachments"
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-07-12
  • 2017-05-07
  • 1970-01-01
  • 1970-01-01
  • 2012-05-24
  • 2013-03-31
  • 2014-11-03
相关资源
最近更新 更多