将角度变量传递给剃刀函数调用
本文关键字:剃刀 函数调用 变量 | 更新日期: 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);
}