【发布时间】:2018-02-08 09:14:57
【问题描述】:
我在 AngularJS 1.6.5 中使用 ASP.NET MVC。
在 Razor 视图中,我有以下输入:
<input id="live-search-input"
class="live-search__input"
type="search"
name="search"
autocomplete="off"
ng-model="searchTerm"
ng-model-options="{debounce: 500}"
ng-click="resultsClick($event)"
value="@Model.Search"
/>
Model.Search 值来自后端,代表用户输入。 ASP.NET MVC 负责一堆标准的编码/清理,所以我不能,例如,搜索 html 标记。但是,我没有任何服务器端验证来检查 Angular 表达式(即被 {{双大括号}} 包围的表达式)
所以,如果我搜索 {{1+2}},上面的输入字段会将表达式计算为“3”,并且输入字段显示我搜索“3”,而不是我实际搜索的内容:“{{1+2}}”:
Angular 提供了ngNonBindable directive,它本质上是告诉 Angular 不要编译元素的内容。但是,这并不能帮助我使输入字段的“值”属性不可绑定。我是否必须清理这个输入服务器端(为角度表达式实现我自己的清理器),或者是否有一种“角度”的方式来做到这一点,类似于使用 ngNonBindable?
【问题讨论】:
标签: angularjs asp.net-mvc asp.net-mvc-4 sanitization