سؤال

وأنا فقط بدأت باستخدام الشبكة MVCContrib في مشروع اختبار. أواجه وقتا عصيبا في العثور على معلومات حول كيفية استخدامه لتحرير / تحديث / حذف.

ويمكن لأي شخص لي نقطة على معلومات عن كيفية وضع صف في وضع التحرير، أو إذا لم يكن هناك شيء من هذا القبيل لذلك الشبكة، ومناقشة أفضل الممارسات لبيانات القائمة التحرير في MVC.

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

المحلول

ويبدو كما لو MVCContrib هو وسيلة بسيطة لبناء جدول HTML من مجموعة من الكائنات النموذج. لا يبدو كما لو ديه أي القدرة على وضع صف في تحرير / تحديث / حذف "واسطة" على غرار GridView لدت WebForms.

ومع ذلك، فإنه لا تبدو وكأنك يمكن التعامل مع هذه الوظيفة ولكن هل تريد. إذا كنت تريد أن تذهب إلى صفحة منفصلة لوضع التحرير، مجرد وضع وصلة في أحد الأعمدة مع رقم الصف و. ويؤخذ مباشرة من التالي: <لأ href = "http://www.jeremyskinner.co.uk/2009/03/01/mvccontrib-grid-part-5-the-action-syntax/" يختلط = "نوفولو noreferrer "> http://www.jeremyskinner.co.uk/2009/03/01/mvccontrib-grid-part-5-the-action-syntax/

<% Html.Grid(Model).Columns(column => {
            column.For(x => x.Id).Named("Person ID");
            column.For(x => x.Name);
            column.For(x => x.Gender);
            column.For(x => x.DateOfBirth);
                column.For("View Person").Named("").Action(p => { %>
                     <td style="font-weight:bold">
                    <%= Html.ActionLink("View Person", "Show", new { id = p.Id })%>
                 </td>
                <% });
        }).RowStart((p,row)  => {     
             if (row.IsAlternate) { %>
                   <tr style="background-color:#CCDDCC">
             <%  }  else  { %>
                 <tr>
             <% }
    }).Render(); %>

وهنا يبدو أنهم يريدون توجيه المستخدم إلى صفحة عرض الشخص: <%= Html.ActionLink("View Person", "Show", new { id = p.Id })%>

وحظا سعيدا، وسعيدة الترميز.

نصائح أخرى

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

public static IGridColumn<T> Action<T>( this IGridColumn<T> column, Func<T, string> viewAction, Func<T, string> editAction, Func<T,bool> editMode )
{
   column.CustomItemRenderer = ( context, item ) => context.Writer.Write( "<td>" + ( editMode( item ) ? editAction( item ) : viewAction( item ) ) + "</td>" );
   return column;
}

وهذا يسمح لك لتحديد كيف يتم تقديم العمود في ضوء الوضع وفي تحرير واسطة. يتم تحديد طريقة استخدام العمل الثالث الذي يجب تقييم إلى true للصف الذي تريد تحريره.

وسوف تستخدم هذه في طريقة عرض ننظر بشيء من هذا القبيل:

<%= Html.Grid( Model.Items ).Columns( column => {
     column.For( x => x.Name ).Action(
        item => Html.ActionLink( item.Name, "SomeAction" ), 
        item => Html.TextBox( "Item.Name", item.Name ),
        item => ( Model.SelectedItem == item ) );
    } )
    .Empty("No items found.")
%>

ويمكنك استخدام نفس النمط لتقديم وصلات عمل (تحرير، وتطبيق، إلغاء الخ) في الخلية. إذا كنت ترغب في تعديل صفوف متعددة في وقت واحد، تأكد من أن أسماء الحقول هي فريدة من نوعها.

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