爲什麼在添加新的「編輯」視圖時這些內容默認會更改?使用EditorFor()
與TextboxFor()
時有什麼優勢?MVC和Razor中的Html.TextboxFor和Html.EditorFor之間的差異
我發現這個
默認情況下,創建和編輯支架現在使用的Html.EditorFor幫手,而不是Html.TextBoxFor幫手。當「添加視圖」對話框生成視圖時,這會改進對數據註釋屬性形式的模型元數據的支持。
爲什麼在添加新的「編輯」視圖時這些內容默認會更改?使用EditorFor()
與TextboxFor()
時有什麼優勢?MVC和Razor中的Html.TextboxFor和Html.EditorFor之間的差異
我發現這個
默認情況下,創建和編輯支架現在使用的Html.EditorFor幫手,而不是Html.TextBoxFor幫手。當「添加視圖」對話框生成視圖時,這會改進對數據註釋屬性形式的模型元數據的支持。
EditorFor
的優點是您的代碼不綁定到<input type="text"
。因此,如果您決定改變某些方面,比如將文本框渲染爲如何將其包裝在div
中,則只需編寫一個自定義編輯器模板(~/Views/Shared/EditorTemplates/string.cshtml
),並且您應用程序中的所有文本框都將自動受益於此更改,而如果您擁有硬編碼Html.TextBoxFor
你將不得不在任何地方修改它。您也可以使用數據註釋來控制它的呈現方式。
嗨@Darin,你是MVC明星.. thx – Irfan 2017-07-20 15:42:38
Html.TextboxFor
始終創建一個文本框(<input type="text" ...
)。
雖然EditorFor查看類型和元信息,並且可以呈現您提供的另一個控件或模板。
例如,對於DateTime屬性,您可以創建一個使用jQuery DatePicker的模板。
任何關於如何使用editfor實現jquery datepicker的例子? – Peru 2014-01-09 10:27:40
感謝您通過使用日期時間案例來簡化差異。 – Kings 2015-02-28 18:04:51
@Peru,[這裏](http://instinctcoder.com/asp-net-mvc-4-jquery-datepicker/)或[這裏](http://www.asp.net/mvc/overview/older-版本/使用最HTML5的和jQuery的UI的日期選擇器,彈出式日曆與-ASPNET-MVC /使用最HTML5的和jQuery的UI的日期選擇器,彈出式日曆與-ASPNET,mvc-第4部分)是如何實現jquery datepicker和使用它與EditorFor是[這裏](http://stackoverflow.com/a/23142692/2218697) – stom 2015-08-01 09:48:39
TextBoxFor:它將呈現與文本輸入HTML元素相對應的指定表達式。簡單地說,它將總是呈現爲一個輸入文本框,而不管與該控件綁定的屬性的數據類型如何。
EditorFor:這個控件有點聰明。它根據屬性的數據類型呈現HTML標記。例如。假設模型中有一個布爾屬性。要將視圖中的該屬性作爲複選框呈現,我們可以使用CheckBoxFor或EditorFor。兩者都會生成相同的標記。
使用EditorFor的優點是什麼?
正如我們所知,根據屬性的數據類型它會生成html標記。所以假設明天如果我們改變模型中屬性的數據類型,不需要改變視圖中的任何東西。 EditorFor控件將自動更改html標記。
偉大的,簡單的答案,即使通過一個很容易吸收新手。 – Kings 2015-02-28 18:06:33
字符串數據類型的html輸出也有細微差別。
Html.EditorFor:
<input id="Contact_FirstName" class="text-box single-line" type="text" value="Greg" name="Contact.FirstName">
Html.TextBoxFor:
<input id="Contact_FirstName" type="text" value="Greg" name="Contact.FirstName">
這是在以前的評論未提及的基本區別之一:
Readonly
屬性將與文本的工作,它不會與EditorFor
工作。
@Html.TextBoxFor(model => model.DateSoldOn, new { @readonly = "readonly" })
上面的代碼工作,其中與下面你不能使控制只讀。
@Html.EditorFor(model => model.DateSoldOn, new { @readonly = "readonly" })
沒有人有這樣做的例子嗎?例如編寫DatePicker的編輯器? – ShaneKm 2011-01-28 08:25:30