XElementオブジェクトを渡すときにMVCでのテキストボックスに名前を付ける方法
-
25-09-2019 - |
質問
私は私の編集ビューへのXElementを渡すと、通常のHTMLコントロールが私のために構築され、正しい名前持っていると思いますよ。私が持っているコードは、次のとおりです。
...
<div class="editor-label">
<%= Html.LabelFor(model => Model.XPathSelectElement("site[@id = 'customerName']").Value)%>
</div>
<div class="editor-field">
<%= Html.TextBoxFor(model => Model.XPathSelectElement("site[@id = 'customerName']").Value)%>
<%= Html.ValidationMessageFor(model => Model.XPathSelectElement("site[@id = 'customerName']").Value)%>
</div>
...
しかし、これは次のことを生成します:
<div class="editor-label">
<label for="Value">Value</label>
</div>
<div class="editor-field">
<input id="Value" name="Value" type="text" value="" />
</div>
なぜ、これであるとどのように私は賢明な名前(例えば)のTextBoxを生成するためのビューを得るのですか?
おかげで、
マットます。
解決
あなたが本当にそれを完全なXML要素を渡すのではなく、あなたのビューのデータを保持するためのViewModelを作成する必要があります。
例えば、
public class CustomerModel
{
public CustomerModel(XElement xml)
{
this.Name = xml.XPathSelectElement("site[@id = 'customerName']").Value;
}
public string Name { get; set; }
}
そして単に:Html.TextBoxFor(モデル=> model.Name);
編集:そしてまた...べきではない、あなたの<%= Html.LabelFor(モデル=>のモデルの.XPathSelectElement( こと%= Html.LabelFor(モデル=>のモデルの.XPathSelectElement(
所属していません StackOverflow