سؤال

أنا أعبر 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>

لماذا هذا وكيف يمكنني الحصول على طريقة العرض لإنشاء مربعات نصية (مثل)؟

شكرًا،

غير لامع.

هل كانت مفيدة؟

المحلول

يجب عليك حقًا إنشاء عرض ViewModel للاحتفاظ ببيانات العرض الخاصة بك بدلاً من تمريره عنصر XML الكامل.

علي سبيل المثال:

public class CustomerModel
{
  public CustomerModel(XElement xml)
  {
    this.Name = xml.XPathSelectElement("site[@id = 'customerName']").Value;
  }
  public string Name { get; set; }
}

ثم ببساطة: html.textboxfor (model => model.name) ؛

تحرير: وأيضًا ... يجب ألا يكون <٪ = html.labelfor (نموذج => نموذج.xpathselectelement (يكون ٪ = html.labelfor (نموذج => نموذج.xpathselectelement (

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top