【问题标题】:how to hit controller action method from within javascript file如何从 javascript 文件中点击控制器操作方法
【发布时间】:2023-04-05 07:20:01
【问题描述】:

这是我试图从包含淘汰相关功能的 .js 文件中点击的 url:

 self.followAction = $.resolvePath("/People/Follow?uid=" + data.UserId);

这里 People 是控制器,Follow 是操作方法,在按钮单击时,我想发送 userId,所以我写了这个。

为了从 javascript 中解析相对路径,我编写了这个函数

// Fix for resolving relative paths from within js scripts
 $.resolvePath = function(url)
 {
  var path = '@Request.ApplicationPath';
  if (path != '/') return path + url;
  return url;
  };

但是,单击按钮时,我收到此错误:HTTP 错误 404.0 - 未找到 网址是:

 localhost:44305/People/@Request.ApplicationPath/People/Follow?uid=8

请告诉我现在应该尝试什么。提前谢谢!

【问题讨论】:

  • Razor 代码不会在 JS 文件中解释,因此 @Request.ApplicationPath 被读取为文字字符串。您需要将该代码放在将要执行的地方,以便您的 JS 可以读取它;例如,作为视图中元素的data-* 属性。
  • 好的,谢谢@RoryMcCrossan
  • 很高兴为您提供帮助。我添加它作为你的答案
  • 我的问题还没有解决,请大家帮帮我@RoryMcCrossan

标签: javascript jquery asp.net-mvc knockout.js


【解决方案1】:

Razor 代码不会在 JS 文件中解释,因此 @Request.ApplicationPath 被读取为文字字符串。您需要将该代码放在将要执行的地方,以便您的 JS 可以读取它;可能作为视图中元素的data-* 属性,如下所示:

<!-- in a layout view... -->
<body data-app-path="@Request.ApplicationPath">
$.resolvePath = function(url) {
    var path = $('body').data('app-path');
    if (path != '/') 
        return path + url;
    return url;
};

【讨论】:

  • 我不知道你能做到这一点。非常感谢!
  • 我已经尝试将该代码放在部分视图中并直接在视图页面上调用该部分视图,但它仍然说 $.resolvepath 不是一个函数,在你的回答中什么是 data-app-path以及将代码放在布局中的位置我认为它应该在头部@Rory McCrossan
  • 它不工作我不知道为什么应该做什么
  • 您最好提出一个关于它的新问题,包括输出的实际 HTML 和 @Request.ApplicationPath 的值
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-30
  • 1970-01-01
  • 2011-05-06
相关资源
最近更新 更多