@Html扩展控件在渲染时控件属性值都没有加载怎么办?

.net MVC提供的html控件扩展方法功能很强大,小编一直很喜欢,Web开发框架中也一直使用,但是最近小编做项目时出现一个怪异的问题和大家分享一下。
现象
定位
解决
现象

乱像
如图所示,几个文本框完全是乱的,并且点击登录按钮也没有效果。
贴上我们源码中电子邮箱文本框的代码:

    <div class="form-group row">
        <div class="col-md-3">
            @Html.LabelFor(m => m.Email, new { @class = "control-label" }, ":")
        </div>
        <div class="col-md-9">
            @Html.TextBoxFor(m => m.Email, new { @class = "email form-control", autofocus = "autofocus" })
        </div>
        @Html.ValidationMessageFor(m => m.Email)
    </div>
定位

分析上述源码是没有问题的,我们F12看下生成的页面代码,如下: 页面代码
发现生成的input标签的属性值全为空!!!这是为什么呢?
可能是MVC渲染页面的时候出错,我们更新了Microsoft.AspNet.Mvc.5.2.2、Microsoft.AspNet.WebPages.3.2.2和Microsoft.AspNet.Razor.3.2.2,还是一样的错误,说明不是dll问题。
也可能是我们代码中写了不该写的代码,比如html文本编码出现问题。如下代码段,会引发在mvc渲染好页面后,对html标签属性值置空的操作。

    public class HtmlAttributeNoEncoding : System.Web.Util.HttpEncoder
    {
        protected override void HtmlAttributeEncode(string value, System.IO.TextWriter output) 
        { 
            StringBuilder sb = new StringBuilder(); 
            StringWriter sw = new StringWriter(sb); 
            base.HtmlAttributeEncode(value, sw); 
        }
     }
解决
在web.config中 <httpruntime targetframework="4.5.1" encodertype="Nop.Web.Extensions.HtmlAttributeNoEncoding" / >,去掉该编码类型,就可以了。 去掉encodertype代码后,结果如图:

本站文章除注明转载外,均为本站原创或翻译,欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,共创和谐网络环境。
转载请注明:文章转载自:华晨软件-云微开发平台 » @Html扩展控件在渲染时控件属性值都没有加载怎么办?
本文标题:@Html扩展控件在渲染时控件属性值都没有加载怎么办?
本文地址:https://www.hocode.com/QAPrefecture/0013.html

相关文章: web框架UI系列--MVC常用控件讲解

电话
电话 18718672256

微信
二维码