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

本文关键字:剃刀 函数调用 变量 | 更新日期: 2023-09-27 18:30:01

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

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

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

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

剃须刀:

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

问题是传递的值是CCD_ 1本身。

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

我也尝试了以下操作,但没有成功。

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

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

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

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

如果负责条件显示的@CSharpMethod.ShowMessage(例如HTML、Css样式)尝试angular ng-hide/ng-show(在这里尝试一些教程)。

如果您真的需要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";
                });

在控制器中创建操作以处理请求

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