XElementオブジェクトを渡すときにMVCでのテキストボックスに名前を付ける方法

StackOverflow https://stackoverflow.com/questions/2187004

質問

私は私の編集ビューへの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(

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top