C# 与ng模型绑定时防止AngularJS表达式求值的问题

C# 与ng模型绑定时防止AngularJS表达式求值的问题,c#,angularjs,asp.net-mvc,xss,C#,Angularjs,Asp.net Mvc,Xss,我对使用ASP.NET MVC(5.2.3)razor引擎呈现的网页有一个问题,但它也使用AngularJS(1.7.4)。问题是应该呈现为纯文本的内容正在由AngularJS进行评估 因此,例如,在我们的模型中,我们有一个属性Name,例如,当值为{{1+1}}时,显示为2,即正在计算AngularJS表达式: (修订的)cshtml页面如下所示: @model Models.SomeViewModel <div ng-controller="RuleController" ng-f

我对使用ASP.NET MVC(5.2.3)razor引擎呈现的网页有一个问题,但它也使用AngularJS(1.7.4)。问题是应该呈现为纯文本的内容正在由AngularJS进行评估

因此,例如,在我们的模型中,我们有一个属性
Name
,例如,当值为
{{1+1}}
时,显示为
2
,即正在计算AngularJS表达式:

(修订的)cshtml页面如下所示:

@model Models.SomeViewModel

<div ng-controller="RuleController" ng-form="ruleForm" novalidate>
  <!-- stuff here -->
   <div class="panel">
      <div class="panel-heading">
       <!-- stuff here -->
      </div>
    <div class="panel-body ng-cloak">
        <!-- stuff here -->
        <div class="row form-group">
            @Html.LabelFor(model => model.Name, new HtmlAttributeBuilder().WithCssClass("col-sm-1  control-label"))
            <div class="col-xs-12 col-sm-10 col-md-11 pull-right">
                @Html.TextBoxFor(model => model.Name, new HtmlAttributeBuilder().WithCssClass("form-control form-group-margin").WithNgModel("viewModel.name").WithNgChange("updateName(viewModel.name)").WithRequired())
                <span id="name-error" class="text-danger error-text" ng-model="errors.viewModel.Name">{{errors.viewModel.Name}}</span>
            </div>
        </div>
有趣的是,当我查看
RuleController
$scope.viewModel.name
的值时,我可以看到它是
{{1+1}
而不是2


我尝试过使用
ng non-bindable
,虽然它阻止了对角度表达式的求值,但也阻止了值的持久更新,因为它删除了双向绑定。

您尝试过这个指令吗


注意,这可能会出现在评论中,但我没有足够的声誉。

AngularJS文档特别提到不要混合服务器和客户端模板,但我猜您已经将Angular添加到现有的应用程序中…@Erlend您能告诉我AngularJS文档中的相关部分吗?那真的很有帮助。我不知道为什么会像许多年前那样,决定混合客户端和服务器端渲染。请参阅“删除沙盒”下的“中途”:@Erlend谢谢。谢谢。我还尝试使用
ng non-bindable
。请看我更新的问题。
[Serializable]
public class HtmlAttributeBuilder : Dictionary<string, object>
{
    public HtmlAttributeBuilder WithCssClass(string cssClassName)
    {
        this.Add("class", cssClassName);
        return this;
    }

    public HtmlAttributeBuilder WithNgModel(string property)
    {
        this.Add("ng-model", property);
        return this;
    }

    public HtmlAttributeBuilder WithNgChange(string val)
    {
        this.Add("ng-change", val);
        return this;
    }
}