将角度变量传递给剃刀函数调用

时间:2014-11-11 09:15:26

标签: c# asp.net-mvc angularjs razor

在我的angularjs控制器的某个地方,我有这个变量:

$scope.variableForRazor = "Test Value For RAZOR!";

我想通过razor调用C#函数时将此变量作为参数传递。这是简化的c#代码:

public static string ShowMessage(string msg)
{
    return msg;
}

在剃刀中:

@CSharpMethod.ShowMessage("{{variableForRazor}}")

问题是传递的值是{{variableForRazor}}本身。

如何修改它,以便在ShowMessage上设置断点时,将传递的值为Test Value For RAZOR!

我还尝试了以下但不起作用。

@CSharpMethod.ShowMessage("variableForRazor")
@CSharpMethod.ShowMessage({{variableForRazor}}) // does not compile
@CSharpMethod.ShowMessage(variableForRazor) // does not compile

2 个答案:

答案 0 :(得分:0)

您正在混合客户端和服务器代码。 AngularJS完全在您的客户端上运行。您的服务器上的ASP.NET MVC。如果要将信息传递到服务器以影响生成的Razor视图,则必须将其作为参数(对于GET请求)或在请求正文中包含在服务器请求中

答案 1 :(得分:0)

您已经错过了客户端 - 服务器协议。

如果负责条件显示的@CSharpMethod.ShowMessage(例如HTML,Css样式)尝试使用角度ng-hide / ng-show(尝试一些tutorial here)。

如果你真的需要在服务器端处理javascript变量。使用$ http ajax将信息发送回Asp.net MVC控制器

$http.post(@Url.Action("YourApi"), {variable: $scope.variable})
                .success(function(data) {
                    $scope.status = "done";
                })
                .error(function(data, status, header) {
                    $scope.status = "error";
                });

在你的控制器中创建Action以处理请求

    [HttpPost]
    public JsonResult YourApi(string variable)
    {
        var result = DoSomething(variable);

        return Json(result);
    }