2

我正在尝试在 MVC 中执行以下操作:我一直在尝试ReplaceSpecialCharactersInURL从 JavaScript 调用 C# 方法,如下所示

var SuppName= obj.data('suppliername');
var NewSupp= '@Common.ReplaceSpecialCharactersInURL(SuppName)';

但它给我一个错误如下:

当前上下文中不存在名称“SuppName”

另一方面,当我直接传递名称时它运行正常

var NewSupp= '@Common.ReplaceSpecialCharactersInURL("NewName")';

我能弄清楚的是我无法将 JavaScript 变量传递给 c# 方法

让我知道这样的事情是否可能,如果是,那么如何。

4

2 回答 2

1

这在您尝试执行此操作的方式中是不可能的,因为 Razor 是在服务器端处理的,而 JavaScript 是在客户端处理的。

您可以选择的一种方法是要求服务器Common.ReplaceSpecialCharactersInURL使用 Ajax 请求进行调用,如下所示:

服务器:

public ActionResult ReplaceCharacters(string url) {
    string result = Common.ReplaceSpecialCharactersInURL(url);
    return Json(new { result });
}

客户:

<script type="text/javascript">
    var SuppName= obj.data('suppliername');

    // Using jQuery Ajax here.
    $.post('@Url.Action("ReplaceCharacters")', { url: SuppName },
        function (data) {
            var newUrl = data.result;
            // newUrl here is the result of Common.ReplaceSpecialCharactersInURL
        }
    );
</script>

另一种选择是创建服务器端函数的 JavaScript 版本 ( ReplaceSpecialCharactersInURL),但在某些情况下,这可能非常困难,甚至是不可能的。


额外的:

我不知道你是做什么的ReplaceSpecialCharactersInURL,但你应该检查encodeURIComponentJavaScript 函数,以防它可以帮助你解决这个特定问题。

于 2013-07-30T12:17:24.790 回答
1

这是不可能的,因为 Razor 视图引擎对您的 Javascript 一无所知。

于 2013-07-30T10:27:07.367 回答