asp.net-mvc-3 - mvc - تحميل برنامج asp net 2010




لا يوجد اسم 'model' في السياق الحالي في MVC3 (13)

أضفت صفحة cshtml في مشروع. عندما حاولت إضافة التعريف التالي إليه ، تظهر لي رسالة خطأ: "اسم 'النموذج' غير موجود في السياق الحالي".

@model xyz.abc.SomeClass

راجعت المراجع ، كلهم ​​في المكان. أضفت web.config في مجلد العرض ، لكن ذلك لم يصلح ذلك.

هل هناك شيء أفتقده؟


أثناء التصريح عن النموذج أعلى العرض باستخدام شفرة مثل:

@model MyModel

تحتاج إلى الاستفادة من المراجع الخاصة بك أدناه ، على سبيل المثال:

@Html.Encode(Model.MyDisplayValue)

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


إذا كانت وجهات نظرك موجودة في مجموعة مكتبات للفصول الدراسية ، وهو أمر مفيد لإعادة استخدام العروض المشتركة بين المشاريع ، فإن القيام بما اقترحه آدم ربما لا يكون كافياً. لا يزال لدي مشاكل حتى مع ذلك.

جرب هذا في web.config في جذر مشروعك:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
      <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
      <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
    </sectionGroup>
  </configSections>
  <system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <pages pageBaseType="System.Web.Mvc.WebViewPage">
      <namespaces>
        <add namespace="System.Web.Helpers" />
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Routing" />
        <add namespace="System.Web.WebPages" />
      </namespaces>
    </pages>
  </system.web.webPages.razor>
  <appSettings>
    <add key="webpages:Version" value="2.0.0.0" />
    <add key="webpages:Enabled" value="false" />
    <add key="PreserveLoginUrl" value="true" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
  </appSettings>
  <system.web>
    <compilation debug="true" targetFramework="4.0">
      <assemblies>
        <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.Helpers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.WebPages, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
      </assemblies>
    </compilation>
    <pages>
      <namespaces>
        <add namespace="System.Web.Helpers" />
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Routing" />
        <add namespace="System.Web.WebPages" />
      </namespaces>
    </pages>
  </system.web>
  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <modules runAllManagedModulesForAllRequests="true" />
    <handlers>
      <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
      <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
      <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
      <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
      <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
      <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
    </handlers>
  </system.webServer>
</configuration>

وهذا في web.config في مجلد المشاهدات الخاصة بك:

<?xml version="1.0"?>

<configuration>
  <configSections>
    <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
      <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
      <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
    </sectionGroup>
  </configSections>

  <system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <pages pageBaseType="System.Web.Mvc.WebViewPage">
      <namespaces>
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Routing" />
      </namespaces>
    </pages>
  </system.web.webPages.razor>

  <appSettings>
    <add key="webpages:Enabled" value="false" />
  </appSettings>

  <system.web>
    <httpHandlers>
      <add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
    </httpHandlers>
    <pages
        validateRequest="false"
        pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
        pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
        userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
      <controls>
        <add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
      </controls>
    </pages>
  </system.web>

  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />

    <handlers>
      <remove name="BlockViewHandler"/>
      <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
    </handlers>
  </system.webServer>
</configuration>

هذا العمل بالنسبة لي. لدي الآن حساسية وأخطاء تجميع في وجهات نظري في مشروع غير MVC يمكنني الرجوع إليه من مواقع MVC متعددة.


إنه خطأ فظيع ولكن:

تأكد من وجود ملفات Web.config في العرض الخاص بك عن بعد . ربما تم تخطيها لتحميلها من خلال فلاتر برنامج Ftp.


استغرق الأمر من الأعمار لحل هذه المسألة ، ولكن في النهاية أرجو أن يكون حلها على MVC ، وهذا مشابه:

لدي إعادة تثبيت ASP.NET 4.5 ( http://www.asp.net/downloads )

لقد تابعت البرنامج التعليمي ترقية على http://www.asp.net/whitepapers/mvc4-release-notes

لكن هذه الفقرة المذكورة خاطئة بالنسبة لي

System.Web.Mvc, Version=4.0.0.0
System.Web.WebPages, Version=2.0.0.0
System.Web.Helpers, Version=2.0.0.0
System.Web.WebPages.Razor, Version=2.0.0.0

لأن لدي Razor في System.Web.Razor ، لذلك قمت بتغيير مساحة الاسم razor إلى System.Web.Razor.

أضف هذا إلى web.config الخاص بك

<appSettings>
  <add key="webpages:Version" value="2.0.0.0" />
</appSettings>

لقد قمت بإضافة مرجع التجميع إلى كافة هذه التجميعات أعلاه

حدد موقع عنصر ProjectTypeGuids واستبدل {E53F8FEA-EAE0-44A6-8774-FFD645390401} بـ {E3E379DF-F4C6-4180-9B81-6769533ABE47}.

هذا كل شيء.


تحديث: 5/5/2015 بالنسبة لمشروع MVC 5 ، تحتاج إلى ضبط الإصدار إلى 5.0.0.0 في /views/web.config

<system.web.webPages.razor>
     <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</system.web.webPages.razor>

تحقق من ملف web.config الخاص بك يجب أن يكون موجودًا في الملفات المنشورة


كان لديك مشاكل مماثلة باستخدام VS2012 و VS2013.
إضافة السطر التالي إلى <appSettings> في main.config الرئيسي عمل:

<add key="webpages:Version" value="3.0.0.0" />

إذا كان الخط موجودًا بالفعل لكنه قال 2.0.0.0 ، فإن تغييره إلى 3.0.0.0 عمل.


كنت أواجه نفس المشكلة ثم أجد حلاً. الحل هو:

  1. أغلق Visual Studio
  2. احذف ملف SUO
  3. قم بإعادة تشغيل Visual Studio

الملف .suo هو ملف مخفي في نفس المجلد حيث يوجد ملف الحل .svn . أمل ، سوف يعمل!


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


لقد واجهت نفس المشكلة عندما قمت بإنشاء منطقة جديدة لتنظيم صفحاتي. تبدو هيكليتي مثل:

WebProject

  • [] المناطق
    • [] منطقة جديدة
      • [] وحدات التحكم
      • [] الآراء
  • [] وحدات التحكم
  • [] الآراء
    • الملف web.config
  • الملف web.config

عملت طرق العرض التي تم إنشاؤها في مجلد طرق العرض ضمن WebProject بشكل جيد ، ولكن طرق العرض التي تم إنشاؤها تحت NewArea أخطأت في الخطأ التالي: "اسم 'نموذج' غير موجود في السياق الحالي." لإصلاح هذا قمت بنسخ web.config في المجلد طرق العرض ضمن WebProject إلى المجلد طرق العرض في NewArea. انظر أدناه.

WebProject

  • [] المناطق
    • [] منطقة جديدة
      • [] وحدات التحكم
      • [] الآراء
        • الملف web.config
  • [] وحدات التحكم
  • [] الآراء
    • الملف web.config
  • الملف web.config

لقد واجهت هذا لأنني خلقت يدوياً هذه المنطقة الجديدة باستخدام Add -> New Folder لإضافة المجلدات. يجب علي النقر بزر الماوس الأيمن على المشروع وتحديد Add -> Area. بعد ذلك ، تعامل Visual Studio مع إعداد المنطقة بشكل صحيح.


لقد واجهت هذه المشكلة كذلك. كانت ظروفي مختلفة بعض الشيء.

  1. تم نقل أحد مجلدات العرض الخاص بي بطريق الخطأ إلى الدليل الجذر للمشروع. يؤدي هذا إلى المسار project_root/SignUp/ViewName المطابق قبل project_root/Views/SignUp/ViewName . هذا تسبب في الخطأ @model .

  2. بعد نقل المشاهدات مرة أخرى إلى الموقع المناسب ، تم إعادة إنشاء الدليل بطريقة أو بأخرى في جذر المشروع. هذه المرة ، فارغة. /SignUp/ViewName ، ولكن /SignUp/ ألقى 403 - Forbidden: Access is denied. خطأ. يجب إزالة المجلد بأكمله من جذر المشروع.

آمل أن يساعد هذا شخصًا ما. قضيت ساعات معتقدًا أن سبب المشكلة يرجع إلى الترقية التي أجريناها مؤخرًا من MVC 3 إلى MVC 4. مجرد ملاحظة: يجب أن تحدث مشكلات الترقية فقط بين MVC 2 و MVC 3. إذا رأيت هذه المشكلة في الإصدارات الأحدث ، فربما لا يرجع ذلك إلى تطوير.


لقد واجهت هذه المشكلة نفسها ، ولكن في حالتي ، كان الشيء الوحيد الذي تغير هو أنني قمت بإلغاء تثبيت Visual Studio 2012 وتثبيت Visual Studio 2013. فتحت حلنا ، لكني ظللت أحصل على نفس The name 'model' does not exist in current context خطأ The name 'model' does not exist in current context في كل عرض Razor.

اقترح لي زميل العمل التحقق من وجود تحديثات لـ VS2013. بعد أن قمت بتثبيت التحديث VS2013 1 ، توقفت عن الحصول على هذا الخطأ.


تحديث: إذا كنت تستخدم إصدارًا أحدث من MVC ، فسيتم تطبيق نفس العملية ، فقط تأكد من استخدام رقم الإصدار الصحيح في سطر <host> web.config.

حسنًا ، وجدت نفسي أواجه نفس الشئ الذي قمت به ، وبعد بحث إضافي قليلاً ، اكتشفت ما هي المشكلة!

يجب تضمين MVC3 web.config الافتراضي لمجلد طرق العرض. يحتوي MVC3 على اثنتين: واحدة في الجذر للتطبيق ، وواحدة لمجلد المشاهدات. هذا يحتوي على مقطع لمساحات الأسماء المضمنة. تأكد من أن صورتك تبدو كالتالي:

  <system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <pages pageBaseType="System.Web.Mvc.WebViewPage">
      <namespaces>
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Routing" />
      </namespaces>
    </pages>
  </system.web.webPages.razor>

أقترح عليك إنشاء مشروع MVC3 جديد ، ثم مجرد نسخ web.config تم إنشاؤه لك في مجلد وجهات النظر الخاصة بك.

هام بمجرد القيام بذلك ، تحتاج إلى إغلاق الملف وإعادة فتحه. فويلا! التحسس!





razor