您可以覆蓋default editor template(~/Views/Shared/EditorTemplates/MultilineText.cshtml
):
@Html.TextArea(
"",
ViewData.TemplateInfo.FormattedModelValue.ToString(),
ViewData
)
,然後假設你已經定義的視圖模型:
public class MyViewModel
{
[DataType(DataType.MultilineText)]
public string Text { get; set; }
}
主視圖裏面你可以這樣做:
@model MyViewModel
@Html.EditorFor(x => x.Text, new { cols = "100", rows = "15", id = "dialogText", @class = "full-width" })
@Html.EditorFor(x => x.Text, new { cols = "100", rows = "10", id = "dialogText", @class = "full-width" })
這將呈現預期的輸出:
<textarea class="full-width" cols="100" id="dialogText" name="Text" rows="15">
hello world
</textarea>
<textarea class="full-width" cols="100" id="dialogText" name="Text" rows="10">
hello world
</textarea>
而且你可以提高編輯模板,這樣你就不需要在每個指定@class屬性EditorFor這樣調用:
@{
var htmlAttributes = ViewData;
htmlAttributes["class"] = "full-width";
}
@Html.TextArea(
"",
ViewData.TemplateInfo.FormattedModelValue.ToString(),
htmlAttributes
)
,現在你可以:
@model MyViewModel
@Html.EditorFor(x => x.Text, new { cols = "100", rows = "15", id = "dialogText" })
@Html.EditorFor(x => x.Text, new { cols = "100", rows = "10", id = "dialogText" })
哦,不要忘了,ID必須是唯一的HTML,所以這id = "dialogText"
顯然應該是不同的第二個textarea。
謝謝Darin。當我有機會對其進行測試時,我會審查並測試您所說的所有內容並標記爲已回答。一如既往,你的回答非常詳細。只是一個簡單的問題。你認爲可以使用cols和rows,或者我應該在px中指定寬度。如果是px,那我該怎麼做? –
兩者都是可能的。我不是CSS專家,但我從我的朋友設計師那裏聽說他們更喜歡使用CSS來實現這一點。所以使用樣式屬性:'@ Html.EditorFor(x => x.Text,new {style =「width:100px; height:50px;」})''。或者應用預定義的CSS類。 –
該解決方案直到版本6纔有可能。https://github.com/aspnet/Mvc/issues/965 –