2

我正在使用ASP.Net-MVC3并且我在

布局.cshtml

$(function() {
    $.ajax({
        url: '@Url.Action("EtiketGetir", "Etiket")',
        type: "POST",
        data: {
            data: data
        },
        success: function(msg) {},
        error: function(msg) {}
    });​

这适用于layout.cshtml,但我复制了该代码并粘贴到test.js文件中,但它停止了工作。

4

3 回答 3

5

那是因为只有 razor 处理@标志,但它不处理js文件。

url: '@Url.Action("EtiketGetir", "Etiket")',

有关解决方案,请阅读这篇文章:
asp.net-mvc:js 文件中的剃刀“@”符号

于 2012-05-07T17:14:57.313 回答
1

在这些情况下,我通常做的是在我的 javascript 文件中创建一个初始化函数并将这些数据传递给它:

// test.js
(function(test, $, undefined) {
    test.initialize = function(options) {
        this.someUrl = options.someUrl;
    }

    test.someFunctionThatUsesUrl = function() {
        $.ajax({
            url: this.someUrl
        });
    }
})(window.test = window.test || {}, jQuery);

然后在使用 test.js 的页面中,我将调用初始化函数:

<script type="text/javascript" src="test.js"></script>
<script type="text/javascript">
    test.initialize({
        someUrl: '@Url.Action("Index", "Home")'
    });
于 2012-05-07T17:31:07.600 回答
1

我解决了使用此代码的问题

$(function() {
    $.ajax({
        url: '/ControllerName/IndexName/',
        type: "POST",
        data: {
            data: data
        },
        success: function(msg) {},
        error: function(msg) {}
    });​
于 2012-05-13T13:39:32.360 回答