asp.net-mvc – 为什么Razor会添加另一个值属性以及如何删除它?
当我在剃刀视图页面中键入以下内容时:
@Html.TextBoxFor(m => m.Name,new {@Value="Default Value",@Class = "CSSRadwan" }) 它翻译成如下: <input Class="CSSRadwan" Value="Default Value" id="Name" name="Name" type="text" value="" /> 如果我用@value(小“v”)更改@Value,它根本不会翻译. 我的问题是: 为什么还有另一个名为“value”的属性而且它是空的?怎么删除它? 为什么“Value”属性中的字符“V”是大写,而另一个是小的,如果我想让第一个像普通属性一样小,那怎么办呢? 我正在使用MVC4.0和Visual Studio 2012 Update 1. 解决方法
如果你看一下MVC的源代码,你会看到在System.Web.Mvc.Html.InputExtensions.cs中,value属性将始终由框架设置,因为InputHelper方法中的以下行: tagBuilder.MergeAttribute("value",attemptedValue ?? ((useViewData) ? htmlHelper.EvalString(fullName,format) : valueParameter),isExplicitValue); 使用TextBoxFor时,isExplicitValue为true,因此value属性将覆盖任何名为value的现有html属性.这就解释了为什么你不能在TextBoxFor中使用新的{@ value =“我的值”}.
因为m.Name最初没有值.
您无法删除上面显示的值.
它必须是值大写的V,以区别于小写值,因此不会被框架覆盖,如上所述.实际上,您将获得如下输出: <input Value="Default Value" value="" id="Name" name="Name" type="text" /> 由于值出现在html中的值之前,因此“默认值”将被渲染并由浏览器显示在文本框中. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-web-api – ASP.NET Web-API帮助-API生成器?
- asp.net-mvc – 我可以在使用区域时将system.web.webPages.
- asp.net – Web部署安装程序(MSI)中没有“IIS 7部署处理程序
- asp.net – 授权问题 – 匿名用户无法访问.jpeg或.css
- asp.net-mvc – 使用MVC使用List填充@ Html.DropDownList
- asp.net-mvc – 在视图中创建DropDownListFor项
- asp.net – .resx vs数据库vs用于提供本地化/全球化的自定义
- asp.net-mvc-3 – 如何从MVC 3和IIS7提供汇编嵌入式资源?
- asp.net-mvc – 将ASP.NET MVC布局应用于Jquery.Mobile页面
- asp.net – 模拟CSRF攻击
- asp.net-mvc – HiddenFor(x => x.Id)正在由UrlP
- 如何/在哪里asp.net mvc处理解码和动作方法参数
- asp.net – 编译错误 – 与委托没有相同的签名
- asp.net – 如何获取控制器和操作名称在OnAction
- asp.net – 使加密字符串的长度与输入字符串相同
- asp.net-mvc-2 – 什么是MapRoute名称空间参数?
- asp.net – 为什么我在查看浏览器功能时会得到这
- 使用HtmlAnchor或ASP.NET HyperLink作为导航页内
- asp.net – 使用ITemplate对自定义控件进行数据绑
- asp.net – 在现有系统上重构可测试性