一尘不染

角ASP.NET MVC绑定

angularjs

在我们的MVC 5项目中,我们使用Angular。以下剃刀效果很好:

 @Html.EditorFor(x => x.FirstName,
          new { required = "required", ng_model = "FirstName" })

但是,如果在呈现页面时将MVC Model.FirstName 设置为“ Bob”,则“输入”字段仍为空白。

如果我在Angular控制器中设置此设置:

  $scope.FirstName = "@(Model.FirstName)";

然后出现“鲍勃”。

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

Angular似乎覆盖了MVC编写的[input value =“ Bob”]。


阅读 217

收藏
2020-07-04

共1个答案

一尘不染

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

 $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。

2020-07-04