كيفية استخدام المحرر داخل A foreach
-
22-09-2019 - |
سؤال
لدي نموذج:
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
داخليًا لمعالجة كل عنصر مع مساعدك المخصص.
مجرد فكرة لأولئك الذين يزورون السؤال دون أدنى فكرة عن كيفية إدارة هذه الحالات.
لا تنتمي إلى StackOverflow