【问题标题】:passing angular variable to razor function call将角度变量传递给剃刀函数调用
【发布时间】:2014-11-11 09:15:25
【问题描述】:

在我的 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

【问题讨论】:

  • 您问了一个非常好的问题......如何利用您的 Razor 值并将它们无缝传递给 Angular 而无需往返。一种方法是隐藏 ` 我知道这看起来并不优雅,但它是直接进入 angular $scope 的途径。另一种方法是使用 ng-init,如 <div class="row-fluid" ng-controller="PersonDetailsController" ng-init="personId=@Model.Id">

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


【解决方案1】:

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

【讨论】:

  • 您介意分享一个示例 sn-p 吗?还是有用的文章? :)
  • boindiil,我想你没抓住重点。 OP 想要将 Razor 模型值传递给他的 Angular 应用程序。这比再次往返服务更有效。
  • 对我来说,看起来 OP 想要将角度变量 variableForRazor 的值传递给 razor 方法。 @Pedigree 你能清除这个吗?
【解决方案2】:

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

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

如果您确实需要在服务器端处理 javascript 变量。使用 $http ajax 将信息发送回 Asp.net MVC Controller

$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);
    }

【讨论】:

  • 我认为你没有抓住重点。 OP 想要将 Razor 模型值传递给他的 Angular 应用程序。这比再次往返服务更有效。
猜你喜欢
  • 2011-07-07
  • 2015-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-03
  • 2016-10-23
  • 2015-03-09
相关资源
最近更新 更多