ASP.NET MVC 3:使用文本框覆盖"name"属性



使用 Html.TextBoxFor 覆盖 name 属性时是否可以?

我尝试过但没有成功。我需要使用 TextBoxFor 来使客户端验证正常工作,但是由于我不会进入的原因,我需要文本框的名称与生成的文本框不同。

我尝试了以下方法:

@Html.TextBoxFor(x => x.Data, new { name = Model.Key + "_Data", id = Model.Key + "_Data" })

它适用于 ID 但不适用于名称。这可能吗?

更新:查看 TextBoxFor 的代码。看起来没有一个简单的方法。希望有人能证明我是错的。

Rob,实际上有一种更简单的方法。使用名称代替名称

@Html.TextBoxFor(x => x.Data, new { Name = Model.Key + "_Data", id = Model.Key + "_Data" })

你问这个是因为你想对名称应用前缀吗?如果是这样,您可以通过在控制器中设置ViewData.TemplateInfo.HtmlFieldPrefix来执行此操作。

我从布拉德·威尔逊的博客中学到了很多关于这些东西的知识。

EditorFor 有一个重载,您可以在其中提供 name 属性作为参数:

 @Html.EditorFor(expression, null, name)

被称为Microsoft陷阱...

使用大写字母的名称,如下所示

@Html.TextBoxFor(m => m.Reply.Answer, new { Name = "Whatyouwant" })

试试编辑器。 如果要确保即使属性类型不是字符串,也要呈现文本框,则可以将字符串作为模板名称传递。如果属性已经是字符串,则不需要显式templatename来呈现文本框,因此您可以传递null 。请注意,它不需要显式的 id 参数,它会从元素名称推断它。所有验证内容仍然在 EditorFor 中处于活动状态

 @Html.EditorFor(x => x.Data, "string", Model.Key + "_Data")

Ben 的回答得到了我想要的东西,除了你需要用 Html.Raw 包装

@Html.Raw(Html.TextBoxFor(x => x.Data).ToString().Replace("Data", "NewData"))

有点"不漂亮"=),尝试:

@Html.TextBoxFor(x => x.Data).ToString().Replace("Data", "NewData")
对我来说

,它有效!我希望对您有所帮助!

@Html.EditorFor(model => model.Nome, new { htmlAttributes = new { @class = "form-control", @maxlength = "80", @id = "NomeFilter", @Name = "NomeFilter" } })
@Html.EditorFor(Model => Model.Something, "name", "name", new {@class = "form-control" })

不确定中间的两个字符串参数中的哪一个可以正常工作,但只有当我键入这两个参数时,它才有效。

在本例中,我根据权限禁用表单字段,但仍显示它们。我有一个隐藏字段将值发送到控制器,但希望在 EditorFor 中使用不同的字段名称。模型值后的第一个参数表示"name"属性,第二个参数是新名称。

@Html.EditorFor(m => m.UserName, "name", "UserNameDisabled", new { htmlAttributes = new { @class = "form-control", @disabled = "disabled"} });

结果:

<input class="form-control text-box single-line" disabled="disabled" id="UserNameDisabled" name="UserNameDisabled" type="text" value="someEnteredValue" /> 

保持简单,您已经提供了ID,您应该能够简单地使用方法"TextBox"而不是"TextBoxFor",它将在客户端和服务器端正常工作。此外,虽然接受的答案可以工作,但如果您使用浏览器检查标签,则会在标签上生成重复的 Name 属性。下面的解决方案没有这个问题。

MvcHtmlString Html.TextBox(string name, string value, object htmlAttributes)

@Html.TextBox(Model.Key + "_Data", Model.Key, new { id = Model.Key + "_Data" }

相关内容

  • 没有找到相关文章

最新更新