デフォルトのエディターテンプレート(~/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 = "dialogText"
ああ、IDはHTMLで一意でなければならないので、これは2番目のテキストエリアでは明らかに異なるはずであることを忘れないでください。