簡體   English   中英

在ASP.NET MVC Razor View中將class屬性設置為Html.EditorFor

[英]Set the class attribute to Html.EditorFor in ASP.NET MVC Razor View

如你所知,我們可以在razor視圖中為actionLink或textBox設置屬性,但我們如何將屬性設置為@Html.EditorFor ,我知道EditorFor是一個可以根據模型類型設置的動態元素,但是所有形狀都可以獲得屬性。 那么有沒有辦法將屬性設置為@Html.EditorFor對於這樣的事情: new {@class = "myclass"}

嘗試這個:

@Html.EditorFor(model => model.Title, new { htmlAttributes = new { @class = "form-control" } })

EditorFor幫助器呈現相應的編輯器模板。 它可能是您編寫的默認模板或某些自定義模板。 此模板可以包含任何標記。 它可以包含許多DOM元素。 所以現在您明白要求將類應用於模板沒有任何意義。 您希望此類應用於此模板上的哪個元素? 例如,使用TextBoxFor幫助器,您知道它將生成單個輸入字段,因此討論將CSS類應用於它是有意義的(這正是htmlAttributes參數允許您執行的操作)。

據說有不同的技術。 例如,我非常喜歡的是編寫自定義數據注釋模型元數據提供程序和自定義編輯器模板,如以下博客文章中所述

另一種可能性是自定義默認模板(如Brad Wilson的博客文章中所示),並將不同的HTML屬性應用於相應的輸入字段。 我們以string.cshtml編輯器模板為例:

@model string
@Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue, ViewData)

現在,當您想要在視圖模型上為某些字符串屬性呈現此編輯器模板時:

@Html.EditorFor(x => x.SomeStringProperty, new { @class = "myclass" })

添加自定義屬性

@Html.EditorFor(model => model.Name, new { htmlAttributes = new { @data_minlength = "3", @class = "form-control input-md", @placeholder = "Name", @required = "required", @id= "txtName"} })

將數據替換為@data_

它將使用數據生成正確的html-

我相信原來的海報是正確的

  • 每個EditorFor()

    創建一個主HTML element (盡管可能存在其他HTML element ),因此能夠傳遞包含HTML attributes對象以應用於該主要HTML element將非常有用。

  • 我想將HTML 5 '自動對焦'屬性應用於每個表單上的一個字段

  • 但我不想寫自定義代碼。

  • 我討厭這樣一個事實,我現在已經減少使用例如@Html.TextBoxFor()這個字段 ,以便我可以將特定屬性應用於input element

  • EditorFor()方法確實有一個他們稱之為additionalViewData參數 ,但我不知道你能用它做什么,在MSDN上搜索對我沒有任何幫助。

嘗試使用這個簡單的代碼將類添加到@Html.EditorFor()

@Html.EditorFor(x => x.Demo)

<style type="text/css">

#Demo
{
   color:#fff;
   width: 50%;
}

</style>

這段代碼適用於MVC3

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM