加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – AngularJs和ASP.NET MVC 5 – ng-model覆盖文本框值

发布时间:2020-12-15 04:29:10 所属栏目:百科 来源:网络整理
导读:我有一个使用ASP.NET MVC 5使用@ Html.TextBoxFor构建的表单,用我的模型填充表单(例如,在表单导航或服务器端验证失败后). 我现在已经使用Angular引入了客户端地址查找,这意味着现在使用ng-model修饰了一些表单字段,以使Angular查找能够填充搜索到的地址. 例
我有一个使用ASP.NET MVC 5使用@ Html.TextBoxFor构建的表单,用我的模型填充表单(例如,在表单导航或服务器端验证失败后).

我现在已经使用Angular引入了客户端地址查找,这意味着现在使用ng-model修饰了一些表单字段,以使Angular查找能够填充搜索到的地址.

例如.:

@Html.TextBoxFor(m => m.Town,new { @class="form-control",ng_model="address.town" })

现在添加ng-model会覆盖重新加载页面时从MVC模型设置的值.

在浏览器中查看源显示文本框值已从MVC模型正确设置为Town,但Angular随后出现并使用address.town填充它,该地址为空,因此表单不显示任何值.

我怎样才能阻止Angular这样做呢?

解决方法

您可以使用ng-init强制MVC中的值
<input name="Town" type="text" ng-model="address.town" ng-init="address.town= @Model.Town" />

@Html.TextBoxFor(m => m.Town,new { ng_model="address.town",ng_init="address.town= Model.Town" })

或者,我使用我在这里找到的指令https://stackoverflow.com/a/22567485/2030565

app.directive('input',function ($parse) {
    return {
        restrict: 'E',require: '?ngModel',link: function (scope,element,attrs) {
            if (attrs.ngModel) {
                val = attrs.value || element.text();
                $parse(attrs.ngModel).assign(scope,val);
            }
        }
}; });

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读