在我的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
答案 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);
}