.net .JS文件,在Ajax url中使用@url.action
我一直试图在另一个外部的.net .JS文件,在Ajax url中使用@url.action,.net,asp.net-mvc-4,.net,Asp.net Mvc 4,我一直试图在另一个外部的.JS文件中使用AjaxUrl内部的.Action,但不幸的是我没有运气 这是我的密码: $.ajax({ type: 'post', url: "@Url.Action("ClearData","Home")", success: function () { } }); 此代码仅在视图本身内部工作,而不在外部的Javascript中工作。 我们已经找到了一些可能的解决办法,但似乎与此不同 在另一个.Js文
.JS
文件中使用AjaxUrl
内部的.Action
,但不幸的是我没有运气
这是我的密码:
$.ajax({
type: 'post',
url: "@Url.Action("ClearData","Home")",
success: function () {
}
});
此代码仅在视图本身内部工作,而不在外部的Javascript
中工作。
我们已经找到了一些可能的解决办法,但似乎与此不同
在另一个.Js
文件中使用@Url.Action
是否有其他方法?@Url.Action()
是razor(服务器端)代码,不在外部文件中解析。选择包括
在主文件中声明全局变量,例如
var url = @Url.Action("ClearData","Home");
然后在外部脚本中,在ajax调用中使用url:url
在处理的元素中包含data-
属性,例如,如果是按钮单击事件,则
<button data-url="@Url.Action("ClearData","Home")" id="mybutton">
如果您的js代码在视图中
$.ajax({
type: 'post',
url: "@Url.Action("ClearData","Home")",
success: function () {
}
});
这是工作
当js代码是单独的(外部文件)时
@Url.Action(“ClearData”、“Home”)
不起作用,
在这种情况下,您必须写入总url或文件夹路径您可以创建一个局部视图,然后在该视图中只是隐藏字段的列表 比如
@Html.Hidden("ActionName", @Url.Action("ActionName", "Controller"))
这是由什么产生的
<input id="ActionName" name="ActionName" type="hidden" value="/controller/ActionName">
或者你可以像我一样创建一个js函数
function ActionCaller(actionName)
{
return $('#' + actionName).val();
}
var action = ActionCaller(ActionName);
谢谢@Stephen它工作得很好。。我正在使用图像控件将您的按钮更改为img,并将任何用户选择的图像带入图像控件本身。@user3559349我不知道是否正确理解您的意思,但我不需要在主文件中声明全局变量。一旦我在正在处理的元素中添加了
data-
属性,然后读取外部文件中的值,正如您所说的var url=$(this.data('url')代码>,工作正常。谢谢您的回答。@user3559349非常感谢您我使用了您的解决方案,但我使用了一个隐藏字段,如:
并从jquery调用它var url=$('#hidUrl')。data('url')代码>。它工作得很好。
var urlAction = $('#ActioName').val();
function ActionCaller(actionName)
{
return $('#' + actionName).val();
}
var action = ActionCaller(ActionName);