MVC2: لا يمكن تحويل السلسلة إلى extenceDataObject (دون معرفة أنني أردت)

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

سؤال

أحصل على InvalistoperationException التالية:

The parameter conversion from type 'System.String' to type 'System.Runtime.Serialization.ExtensionDataObject' failed because no type converter can convert between these types.

في إجراءات المشاركة على صفحة ASP.NET MVC2 الخاصة بي، لكنني لست متأكدا من ما يشير إليه. أنا أستخدم التحقق من صحة شرح البيانات:

public class FamilyPersonMetadata
{
    [Required(ErrorMessage = "Name Required")]
    public String Name;

    [Required(ErrorMessage = "Date of Birth required")]
    [DateTime(ErrorMessage = "Invalid Date")]
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:d")]
    public DateTime DateOfBirth;
}

[MetadataType(typeof(FamilyPersonMetadata))]
public partial class FamilyPerson
{
}

وعرضي Inhertis من رأي مع فرعية من عائلية. أنا فقط إنشاء عناصر تحكم بأسماء مطابقة لتلك العائلة، ثم قم بتقديم النموذج، ولكن لسبب ما "نموذجي" غير صالح والخطأ أعلاه يبدو أن السبب. أنا في حيرة تماما حسب طبيعة الخطأ. رمز مماثل يعمل لآراء وإجراءات أخرى.

هل يمكن لأي شخص أن يشيرني في اتجاه الأشياء التي يجب أن تتسبب في ذلك؟

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

المحلول 3

يبدو أنها ذهبت بعيدا عن نفسها. غريب.

نصائح أخرى

بخصوص [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:d")]

"{0:d" يجب ان يكون "{0:d}"

إليك شرح فعلي للمشكلة، وكيفية حلها: http://www.shawson.co.uk/codeblog/mvc-strongly-typed-view- معرض-Null-Model-on-post-bost-back/comment-page-1/

ملخص قصير: لا امنح معلمات عرضك نفس أسماء الحقول النموذجية، ما لم أنها تمثل نفس القيمة (والحصول على نفس النوع).

هذا قد يساعد شخص ما:

كان لدي هذا الاستثناء يجري إلقاؤه لأنني كان لدي أشكال mulitiple في رأيي.

ومع ذلك، لم يقم أحد النماذج بتعيين سمة "الإجراء" بشكل صريح. وهذا هو، كنت أستخدم هذا المنشئ:

@using (Html.BeginForm())

بدلا من هذا واحد:

@using (Html.BeginForm("ACTION_METHOD", "CONTROLLER", FormMethod.Post, null))

هذا من شأنه أن يؤدي إلى نشر المعلمات غير الصحيحة مع النموذج. spoecially، تم تضمين كائن نموذج الأعمال في النموذج عندما لا ينبغي أن يكون. بدوره، كان .NET محاولة تحويل نظام. إلى كائن نموذج أعمال عندما لا ينبغي أن يحاول مثل هذا التحويل.

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

FYI: لفحص سمة "الإجراء" من النموذج الخاص بك، استخدم Firebug وتفقد HTML، والعثور على عنصر النموذج وسمة "الإجراء" ستكون هناك مع جميع المعلمات التي سيتم نشرها مرة أخرى إلى Serber عندما يتم تقديم هذا النموذج وبعد

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