Asp.net-Mvc
如何在 MVC3 中為多行文本框創建多個編輯器模板?
我的觀點中有以下兩種類型的多行文本區域:
<textarea cols="100" rows="15" class="full-width" id="dialogText" name="Text">@Model.Text</textarea> <textarea cols="100" rows="10" class="full-width" id="dialogText" name="Text">@Model.Text</textarea>我想利用自定義編輯器模板,但保留以不同方式指定屬性的能力(例如,
rows上述兩者之間的不同)。我可以為同一個欄位聲明和使用兩種不同的模板嗎?如果是這樣,那麼我應該如何聲明模板以及如何指定要使用的不同模板?
另外我如何聲明不同的列和行。我可以使用 cols,rows 還是應該在 or 中指定高度
CSS和width=500px, height=600px寬度400px?
您可以覆蓋預設編輯器模板(
~/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>您還可以增強編輯器模板,這樣您就不需要在每個 EditorFor 呼叫中指定 @class 屬性,如下所示:
@{ 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 顯然應該是不同的。