ASP.NET MVC: الوصول إلى modelmetadata للعناصر في المجموعة
-
19-09-2019 - |
سؤال
أحاول كتابة سائق السيارات لآراء الفهرس. أود أن أكون قادرا على المرور في مجموعة من النماذج أو عرض النماذج (على سبيل المثال، 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) %>
لا تنتمي إلى StackOverflow