我需要在javascript中提供一个URL作为参数。这是必需的,因为我在共享页面上有一个方法被其他几个页面使用,但该方法需要根据源页面调用不同的URL。
如果我这样尝试,则会在页面加载时调用URL,这是不需要的:
myMethod('@Url.Action("myMethod", "myController")');
function myMethod(myURL) {
window.open(myURL + arguments);
}
如果我这样尝试,“方法”和“控制器”这两个词会加下划线,并且页面不会加载:
myMethod("myMethod", "myController");
function myMethod(method, controller) {
window.open("@Url.Action(method, controller)" + arguments);
}
答案 0 :(得分:4)
您似乎在这里混合了javascript和服务器端代码。一种可能性是在视图中具有指向url的全局javascript变量或在某些DOM元素上使用HTML5 data- *属性。例如,在视图中,您可以定义一个不可见的span标记,该标记将保存url:
<span id="url" data-url="@Url.Action("myAction", "myController")"></span>
然后在调用方法时单独的javascript文件中:
$(function() {
var url = $('#url').data('url');
myMethod(url);
});
您当然会修改您的全局JavaScript函数以直接获取网址而不是操作和控制器:
function myMethod(method, controller) {
window.open(url + arguments);
}