XVAL و ASP.NET MVC 2 ADDMODELSTATEERRORS
-
29-09-2019 - |
سؤال
لديّ تطبيق كنت أستخدمه XVAL بنجاح لبعض الوقت. تم تحديثه مؤخرًا إلى MVC 2.
يمكنني استخدام سمات DataAntations القياسية على نماذج النطاق الخاصة بي ، والتي تنفذ أيضًا طريقة "التحقق ()" التي تستدعي DataAntationsValidationRunner. إذا كانت هناك أي أخطاء ، فإن هذه الطريقة ترمي قوانين.
في وحدات التحكم الخاصة بي ، أستخدم المصيد النموذجي للغاية لصالح Rulesexception
catch (RulesException e)
{
e.AddModelStateErrors(ModelState, "err");
}
جميع الأشياء النموذجية ، مباشرة تقريبًا من الأمثلة ، وتعمل بشكل جيد حتى وقت قريب (أظن أن المشكلات بدأت في وقت تحديث MVC1 -> MVC2.
لذا فإن المشكلة هي: عندما يتم استدعاء طريقة AddModelStateRrors ، أحصل على "نظام.1.get_Count() at System.Web.Mvc.Html.ValidationExtensions.ValidationMessageHelper(HtmlHelper htmlHelper, ModelMetadata modelMetadata, String expression, String validationMessage, IDictionary
2 htmlattributes) في system.web.mvc.html.validationSteStensions.ValidationMessage (htmlhelper htmlhelper ، اسم نموذج السلسلة ، سلسلة التحقق من الصحة ، idictionary`2 htmlattributes) في asp.views_user_edit_aspx .__.
لقد نظرت إلى كل من الكود لطريقة XVAL وتمديد HTMLHelper ، ولا يمكنني معرفة ما يحدث.
أيه أفكار؟
المحلول
لديه نفس المشكلة ولكن فقط حلها: أضف ما يلي إلى web.config أو app.config ، للانتقال إلى MVC2:
<runtime>
<assemblyBinding
xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
أو إلى MVC3:
<runtime>
<assemblyBinding
xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>