سؤال

لديّ تطبيق كنت أستخدمه 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, IDictionary2 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>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top