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

asp.net-mvc – 为什么Razor会添加另一个值属性以及如何删除它?

发布时间:2020-12-16 09:38:46 所属栏目:asp.Net 来源:网络整理
导读:当我在剃刀视图页面中键入以下内容时: @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(
当我在剃刀视图页面中键入以下内容时:

@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.

解决方法

Why there is another attribute called “value” …

如果你看一下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 =“我的值”}.

… and it’s empty?

因为m.Name最初没有值.

how to remove it?

您无法删除上面显示的值.

Why the character “V” in “Value” attribute is capital and the other one is small what if I want the first one to be small too as normal attributes,how to do that?

它必须是值大写的V,以区别于小写值,因此不会被框架覆盖,如上所述.实际上,您将获得如下输出:

<input Value="Default Value" value="" id="Name" name="Name" type="text" />

由于值出现在html中的值之前,因此“默认值”将被渲染并由浏览器显示在文本框中.

(编辑:李大同)

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

    推荐文章
      热点阅读