سؤال

أحاول كتابة سائق السيارات لآراء الفهرس. أود أن أكون قادرا على المرور في مجموعة من النماذج أو عرض النماذج (على سبيل المثال، IEnumerable<MyViewModel>) واحصل على جدول HTML يستخدم DisplayName سمة للعناوين (th العناصر) و Html.Display(propertyName) للخلايا (td عناصر). يجب أن يتوافق كل صف مع عنصر واحد في المجموعة.

عندما أقوم فقط بعرض سجل واحد، كما هو الحال في عرض التفاصيل، أستخدم ViewData.ModelMetadata.Properties للحصول على قائمة الخصائص لطراز معين. ولكن ماذا يحدث عندما يكون النموذج الذي أبعزه إلى العرض هو مجموعة من الكائنات النموذجية أو عرض النموذج وليس نموذجا أو عرض نموذج نفسه؟

كيف يمكنني الحصول على modelmetadata لعنصر معين في المجموعة؟

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

المحلول

قد تقوم طريقة تمديد بسيطة بالوظيفة:

public static class MyExtensions
{
    public static ModelMetadata GetMetadata<TModel>(this TModel model)
    {
        return ModelMetadataProviders.Current.GetMetadataForType(null, typeof(TModel));
    }
}

وفي رأيك:

<%@ Page 
    Language="C#"
    Inherits="System.Web.Mvc.ViewPage<System.Collections.Generic.IEnumerable<MyViewModel>>" %>

<%-- Get metadata for the first item in the model collection --%>
<%= Html.Encode(Model.ElementAt(0).GetMetadata().ModelType) %>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top