سؤال

لدي نموذج:

public class MyListModel
{
    public int ID {get;set;}
    public List<User> Users{get;set;}
}

كيف يمكنني استخدام طريقة HTML.Editorfor داخل A Foreach؟

@model MyListModel
<table>
  <tr>
    <th></th>
  </tr>
  @foreach (var item in Model.Users) {
     <tr>
       <td>
          @Html.EditorFor(item.Enabled)
       </td>
     </tr>
  }
</table>
هل كانت مفيدة؟

المحلول

@Html.EditorFor(x=> item.Enabled)

تمت الإشارة إلى عدة مرات إلى أن نشر مثل هذا النموذج إلى الخادم لن يعمل في MVC بشكل افتراضي. للتحرير بشكل صحيح مع EditorFor في حلقة - for يجب استخدامها كما في:

 @for(var i = 0; i< Model.Users.Count;i++){
      Html.EditorFor(i=>Model.Users[i])
 }

نصائح أخرى

@for (var i = 0; i < Model.Users.Count; i++)
{
<tr>
    <td>@Html.EditorFor(model => model.Users[i].Enabled)</td>
    <td>@Html.EditorFor(model => model.Users[i].FirstName)</td>
    <td>@Html.EditorFor(model => model.Users[i].LastName)</td>
</tr>
}

بالإضافة إلى بعض المتغيرات المخفية لخاصية واحدة على الأقل من المستخدم مطلوب:

@for (var i = 0; i < Model.Users.Count; i++)
{
    @Html.HiddenFor(model => model.Users[i].FirstName)
}

ليس ما تسميه أنيقة ولكنه يعمل فيما يتعلق بالربط في عملك.

هل هناك أي سبب آخر (مثال على ذلك) للاختبار بشكل صريح باستخدام foreach نفسك؟ يمكنك عمل مساعد محرر مخصص (أو عرض) User class وجعل @Html.EditorFor(model=>model.Users). سوف تستخدم الحلاقة foreach داخليًا لمعالجة كل عنصر مع مساعدك المخصص.

مجرد فكرة لأولئك الذين يزورون السؤال دون أدنى فكرة عن كيفية إدارة هذه الحالات.

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