C# 角度ASP.NET MVC绑定

C# 角度ASP.NET MVC绑定,c#,asp.net,asp.net-mvc,angularjs,asp.net-mvc-4,C#,Asp.net,Asp.net Mvc,Angularjs,Asp.net Mvc 4,在我们的MVC5项目中,我们使用Angular。以下剃须刀工作良好: @Html.EditorFor(x => x.FirstName, new { required = "required", ng_model = "FirstName" }) 但是,如果在呈现页面时将MVCModel.FirstName设置为“Bob”,则输入字段仍然为空 如果我在角度控制器中设置此选项: $scope.FirstName = "@(Model.FirstName)"; 然

在我们的MVC5项目中,我们使用Angular。以下剃须刀工作良好:

 @Html.EditorFor(x => x.FirstName,
          new { required = "required", ng_model = "FirstName" })
但是,如果在呈现页面时将MVCModel.FirstName设置为“Bob”,则输入字段仍然为空

如果我在角度控制器中设置此选项:

  $scope.FirstName = "@(Model.FirstName)";
然后“鲍勃”出现了

我的问题是:我是否必须为UI中的每个字段设置$scope.VARIABLE=MODEL.VARIABLE,或者我是否可以告诉Angular尊重ASP.NET MVC带来的内容


Angular似乎过度写入了MVC写入的[input value=“Bob”]。

当您绑定到范围时,无需将模型拆分为单个字段。相反,您应该绑定整个模型:

 $scope.model = @Html.Raw(Json.Encode(Model));
这将向客户端呈现为:

 $scope.model = { FirstName: 'John', LastName:'Doe', etc };
然后可以将输入字段绑定为:

@Html.EditorFor(x => x.FirstName,
      new { required = "required", ng_model = "model.FirstName" })
就我个人而言,我认为不使用@Html更干净,而使用简单的Html:

<input ng-model="model.FirstName" required />


在Angular中,你真的不再需要id了

那真是太好了。完美的一旦软件允许,我会将其标记为答案。当您的angular代码位于单独的*.js文件中时,该怎么办?app.module('app').value('model',@Html.Raw(Json.Encode(model));。模块定义的其余部分可以放在单独的文件中。然后,可以根据需要注入“model”。如果确实需要在同一个请求中获取数据并为初始页提供服务,我可以看到如何在ASP.NET中有效地使用该文件。但是,发送两个请求可能更适合角度框架。您最后的l在html中,有多少代码被mvc的POST请求捕获?