وجود بعض المشاكل مع metadatatype والتعليقات التعليقات التوضيحية و EF

StackOverflow https://stackoverflow.com/questions/4250563

سؤال

أحاول استخدام تعليقات البيانات للتحقق من صحة نماذج إطار الكيان الخاصة بي باستخدام فئات جزئية.

قيل لي في هذا المادة (MSDN), ، يجب أن تكون الفئة الجزئية في نفس مساحة الاسم مثل نموذج البيانات. يقع نموذج البيانات الخاص بي في entityframeworkdataprovider ، وبالتالي فإن صفي الجزئي الذي يقع في myapp.backend.models يبدو مثل هذا:

using System.ComponentModel.DataAnnotations;

namespace EntityFrameworkDataProvider
{
    [MetadataType(typeof(ItemMetaData))]
    public partial class Item { }

    public class ItemMetaData
    {
        [ScaffoldColumn(false)]
        public object CreateDate { get; set; }

        [Required]
        public string DisplayName { get; set; }

        [Required]
        public string Description { get; set; }
    }
}

أتحقق من صحة النموذج في فئة وحدة التحكم الخاصة بي مثل هذا:

[HttpPost]
public ViewResult Edit(Item item)
{
    if (!TryUpdateModel(item))
    {
        return View(item);
    }

    return View("Details", item);
}

يجمع دون أخطاء. ومع ذلك ، عند محاولة تحرير عنصر ما هذا الخطأ هو ما أحصل عليه:

رسالة خطأ التحويل البرمجي: CS0433: نوع "entityframeworkdataprovider.item" موجود في كل من "path.dll" و "path.dll"

أعتقد أن فئة العناصر يجري تجميعها مرتين أو شيء من هذا القبيل. كيف ينبغي منع هذا الخطأ؟

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

المحلول

عمل وحدة التحكم الخاصة بك خاطئ. يجب ألا تستخدم معلمات الإجراء و TryUpdateModel على نفس النوع لأنه سيتم إدراج رسائل الخطأ مرتين في حالة النموذج. يجب أن يبدو أفعالك هكذا بدلاً من ذلك:

[HttpPost]
public ViewResult Edit(Item item)
{
    if (!ModelState.IsValid)
    {
        return View(item);
    }
    return View("Details", item);
}

فيما يتعلق برسالة خطأ المترجم التي تحصل عليها لم تقدم معلومات كافية حتى أتمكن من مساعدتك. تأكد من أن فئة العنصر هذه غير محددة في مواقع مختلفة وأنها بالفعل partial في كل واحد .cs ملف تصادفه. أظن أنه في مكان ما لديك Item فئة محددة وهي ليست جزئية. ما يجب أن تكون على دراية به هو أنه إذا تم تعريف فئة العنصر هذه في مجموعة منفصلة ، حتى لو تم تمييزها بجزئي ، بمجرد تجميعها ، لم تعد فكرة الجزئية موجودة. تعمل الطبقات الجزئية فقط في نفس التجمع.

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