foreach على الممتلكات IEnumperable و خيار الاختيار في ASP.NET MVC

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

سؤال

أعتقد أن هذا السؤال ينطبق على أي من "لمساعدتي HTML"، ولكن مشكلتي المحددة تستخدم الاختيار ...

لدي نموذج من النوع iEnaryerable، حيث الحقوق هي بوكو بسيطة. هذا النموذج هو في الواقع خاصية نموذج أكبر قمت بإنشاء endertortemplate ل. هنا هي الصورة الأكبر لطراز بلدي:

public class bigmodel
{
     public string Title {get; set;}
     public string Description {get; set;}

     [UIHint("ListRights")]
     public IEnumerable<rights> Rights {get;set;}
}

public class rights
{
    public bool HasAccess {get; set;}
    public string Description {get;set;}
}

لقد قمت بإنشاء برنامج Editortemplate يسمى "المميزات" لاستخدامات رأي الرئيسية. على سبيل المثال: <٪ = html.editorfor (m => m.rights)٪>.

في Listretrights.ascx، أريد رمز مثل هذا:

<table>
  <% foreach(rights access in Model)
  { %>
      <tr>
        <td>
            <%=Html.CheckBoxFor( access ) %>
        </td>
        <td>
            <%=access.Description %>
        </td>
      </tr>
  <% } %>
</table>

أعرف أن خط الاختيار لا يعمل، ولكن أريد أن أفعل شيئا ينشئ نفس النتيجة، كما لو كان الوصول إلى خاصية على النموذج.

في المثال أعلاه، أود أن كل شيء لجهاز الاستلاف على آخر.

لقد حاولت تزوير مربع الاختيار برمز مشابه لهذا هذا، لكنه لا يتم تشغيله:

<table>
  <% for(int i=0; i < Model.Count(); i++)
  { %>
      <tr>
        <td>
            <%=Html.CheckBox(string.Format("[{0}].HasAccess",i), Model.ElementAt(i).HasAccess)%>
        </td>
        <td>
            <%=access.Description %>
        </td>
      </tr>
  <% } %>
</table>

أي اقتراحات؟

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

المحلول 2

لقد وجدت الجواب باستخدام منشور مدونات من قبل ستيف ساندرسون في http:/blog.stevenstanderson.com/01/01/01/28/Editing-Variable-Length-list-aspnet-mvc-2Style/

عمل "HTML.BegincollectionItem" عملت في وضعي.

لقد أنشأت Editortemplate للحقوق (في مثالي). ثم أضاف Steve's BegincollectionItem إلى هذا القالب. اتصلت بالقالب باستخدام HTML.RenderPartial كما هو مقترح في بلوق ستيف.

أردت استخدام HTML.Editorfor (M => M.ITEM)، ولكن هذا لا يعمل لأن العنصر هو في foreach وليس في النموذج. يمكن أن يستخدم التحرير في هذه الحالة؟

نصائح أخرى

أعتقد أن لديك مشاكل لأن هذا لم ينجح

<%=Html.CheckBoxFor(access) %>

وهذا لم يعمل أيضا

<%=Html.CheckBoxFor(access=>access.HasAccess) %>

ولكن هذا يجب أن يعمل

<%=Html.CheckBoxFor(x=>access.HasAccess) %>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top