我一直在尝试在另一个外部@Url.Action
文件中使用Ajax url
中的.JS
,但遗憾的是我没有运气。
这是我的代码:
$.ajax({
type: 'post',
url: "@Url.Action("ClearData","Home")",
success: function () {
}
});
此代码仅在视图本身内部工作,但不在Javascript externally
中工作。
我已经搜索了一些可能的解决方案,但它似乎与此不同。
是否有其他方法可以在另一个@Url.Action
文件中使用.Js
?
答案 0 :(得分:2)
@Url.Action()
是razor(服务器端)代码,不在外部文件中解析。选项包括
在主文件中声明一个全局变量,比如说
var url = @Url.Action("ClearData","Home");
然后在外部脚本中使用ajax调用中的url: url
在您处理的元素中包含data-
属性,例如,如果是按钮点击事件,则
<button data-url="@Url.Action("ClearData","Home")" id="mybutton">
然后在外部文件中读取该值,例如
$('#mybutton').click(function() {
var url = $(this).data('url');
$.ajax({
url: url,
....
答案 1 :(得分:0)
如果您的js代码在视图内
$.ajax({
type: 'post',
url: "@Url.Action("ClearData","Home")",
success: function () {
}
});
这是工作
当js代码是单独的(外部文件)时
@Url.Action("ClearData","Home")
不起作用,
在这种情况下,您必须写出总的URL或文件夹路径
答案 2 :(得分:0)
您可以创建局部视图,然后在该视图内部只是隐藏字段的列表 例如
(flatten (conj
生成此
@Html.Hidden("ActionName", @Url.Action("ActionName", "Controller"))
然后您可以这样称呼
<input id="ActionName" name="ActionName" type="hidden" value="/controller/ActionName">
或者您可以像我一样创建一个js函数
var urlAction = $('#ActioName').val();