ประเภทหรือชื่อเนมสเปซไม่มีอยู่ในเนมสเปซ 'System.Web.Mvc'


217

การสร้างโซลูชัน MVC3 เป็นไปด้วยดี แต่มีข้อผิดพลาดในเบราว์เซอร์:

ข้อความแสดงข้อผิดพลาดของคอมไพเลอร์: CS0234: ประเภทหรือชื่อเนมสเปซ 'Html' ไม่มีอยู่ในเนมสเปซ 'System.Web.Mvc' (คุณขาดการอ้างอิงแอสเซมบลีหรือไม่)

Source Error:
Line 25:         <add namespace="System.Web.Mvc" />
Line 26:         <!--<add namespace="System.Web.Mvc.Ajax" />-->
Line 27:         <add namespace="System.Web.Mvc.Html" />
Line 28:         <add namespace="System.Web.Routing" />
Line 29:         <add namespace="System.Web.WebPages" />

ผมได้ติดตั้งแพ็กเก็ตสำหรับการแก้ปัญหาที่มีและการตั้งค่าสำหรับทุกโครงการNuGet MVC3ไม่MVC3รวมถึงห้องสมุดSystem.Web.Mvc.Ajax, System.Web.Mvc.Htmlและคนอื่น ๆ ? เหตุใดฉันจึงได้รับข้อผิดพลาด


ในโฟลเดอร์อ้างอิงฉันมี System.Web.Mvc

Runtime version: v4.0.30319,

Version: 3.0.0.0

Web.config

<?xml version="1.0" encoding="utf-8"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=152368
  -->
<configuration>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
  <appSettings>
    <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
    <add key="webpages:Version" value="1.0.0.0" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
  </appSettings>
  <system.web>
    <compilation debug="true" targetFramework="4.5" />
    <authentication mode="Forms">
      <forms loginUrl="~/Account/LogOn" timeout="2880" />
    </authentication>
    <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>
    <httpRuntime targetFramework="4.5" encoderType="System.Web.Security.AntiXss.AntiXssEncoder, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
    <machineKey compatibilityMode="Framework45" />
    <profile defaultProvider="DefaultProfileProvider">
      <providers>
        <add name="DefaultProfileProvider" type="System.Web.Providers.DefaultProfileProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" applicationName="/" />
      </providers>
    </profile>
    <membership defaultProvider="DefaultMembershipProvider">
      <providers>
        <add name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
      </providers>
    </membership>
    <roleManager defaultProvider="DefaultRoleProvider">
      <providers>
        <add name="DefaultRoleProvider" type="System.Web.Providers.DefaultRoleProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" applicationName="/" />
      </providers>
    </roleManager>
    <sessionState mode="InProc" customProvider="DefaultSessionProvider">
      <providers>
        <add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" />
      </providers>
    </sessionState>
  </system.web>
  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
  </system.webServer>
  <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>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
  </entityFramework>
  <connectionStrings>
    <add name="EFDbContext" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=SportStore;Integrated Security=True;Pooling=False;" providerName="System.Data.SqlClient" />
  </connectionStrings>
</configuration>

MSDN the System.Web.Mvc namespace

ไฟล์packages.config:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="EntityFramework" version="5.0.0-rc" />
  <package id="jQuery" version="1.7.2" />
  <package id="jQuery.UI.Combined" version="1.8.11" />
  <package id="jQuery.Validation" version="1.9" />
  <package id="Microsoft.AspNet.Mvc" version="3.0.20105.1" />
  <package id="Microsoft.AspNet.Providers.Core" version="1.0" />
  <package id="Microsoft.AspNet.Providers.LocalDB" version="1.0" />
  <package id="Microsoft.AspNet.Razor" version="1.0.20105.408" />
  <package id="Microsoft.AspNet.WebPages" version="1.0.20105.408" />
  <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" />
  <package id="Modernizr" version="2.0.6" />
  <package id="Moq" version="4.0.10827" />
  <package id="Ninject" version="3.0.1.10" />
</packages>

1
เว็บเซิร์ฟเวอร์ของคุณคืออะไร คือใน iis?
Daniel A. White

Express IIS ใน Visual Studio 2012
J.Olufsen

1
เป้าหมายของโครงการของคุณตั้งไว้ที่อะไร
Daniel A. White


2
ขึ้นอยู่กับว่าใครตอบคำถามนี้ - นี่คือทั้งหมดที่เราต้องการจัดการแพคเกจ Nuget สำหรับโซลูชัน ... >> อัปเดต
Tom Stickel

คำตอบ:


420

Copy Local = Trueทำความสะอาดวิธีการแก้ปัญหาของคุณแล้วตั้งค่าคุณสมบัติของไฟล์เหล่านั้นไป

เมื่อต้องการตั้งค่าคุณสมบัติการคัดลอกโลคัลเป็นจริงหรือเท็จ

ในโซลูชัน Explorer คลิกปุ่มแสดงไฟล์ทั้งหมดเพื่อแสดงโหนดอ้างอิง

  • เปิดการอ้างอิงโหนสำหรับโครงการ
  • คลิกขวาที่การอ้างอิงในรายการการอ้างอิงและคลิกคุณสมบัติ คุณสมบัติที่เกี่ยวข้องกับการอ้างอิงนั้นจะปรากฏในรายการในหน้าต่างคุณสมบัติ
  • ในหน้าต่างคุณสมบัติเปลี่ยนคุณสมบัติคัดลอกโลคัลเป็นจริงหรือเท็จ

11
! น่ากลัว นี้แก้ไขให้ฉันในโครงการ MVC4 มันชัดเจนมากเมื่อคุณคิดถึงมัน ฉันไม่เคยดูโครงการที่ปรับใช้เพื่อดูว่า DLLs นั้นอยู่ที่นั่นหรือไม่
Alex Kilpatrick

1
ขอบคุณ! สิ่งนี้ช่วยฉันด้วย!
Maritim

1
ไม่เป็นไร บางครั้งปัญหาที่ซับซ้อนได้รับการแก้ไขด้วยวิธีแก้ปัญหาง่ายๆ :)
Toffee

5
มันได้ผล! ฉันเพิ่งเปลี่ยนเพียงหนึ่งการอ้างอิง =>System.Web.Mvc
Jaider

5
เอาฉันสักครู่เพื่อหาว่า "ไฟล์เหล่านั้น" หมายถึงอะไร ทำตามการอ้างอิงแอสเซมบลีในทุกโครงการในการแก้ปัญหาอะไรกับ "Microsoft ASP.NET \ ASP.NET MVC 3 \ Assemblies" หรือชอบในเส้นทางเป็นส่วนหนึ่งของปัญหา
ภารกิจ

60

ไม่ว่าจะด้วยเหตุผลใดก็ตามโซลูชันของฉันสองรายการมีโครงการบนเว็บที่ถอนการติดตั้ง asp.net MVC โดยธรรมชาติ ฉันติดตั้งจาก Nuget และตอนนี้พวกเขาทั้งสองทำงานอีกครั้ง สิ่งนี้เกิดขึ้นหลังจากชุดอัพเดท windows ล่าสุดที่มีการอัพเดตเฟรมเวิร์ก. net สำหรับเวอร์ชันที่ฉันใช้ (4.5.1)

แก้ไข: จาก. Net การพัฒนาเว็บและเครื่องมือบล็อก:

การปรับปรุงความปลอดภัย Microsoft Asp.Net MVC MS14-059 ทำลายงานสร้างของฉัน!


4
นี่เพิ่งเกิดขึ้นกับฉัน อย่างไรก็ตามฉันอัปเดตแพ็คเกจ MVC แทนการติดตั้งใหม่ (ของฉันล้าสมัยแล้ว) มีแหล่งที่มาหรือเหตุผลว่าทำไมสิ่งนี้เกิดขึ้น?
Joshua H

5
ดูเหมือนว่าจะเกี่ยวข้องกับKB2994379หรือKB2992080ขึ้นอยู่กับรุ่น MVC ที่คุณอ้างอิง (5.1 และ 5.0 ตามลำดับ) การอัปเดตจะนำเสนอรุ่นใหม่ของ System.Web.Mvc ซึ่งฉันคิดว่าจะแนะนำข้อขัดแย้งเกี่ยวกับการกำหนดเวอร์ชัน การอัปเดตแพ็คเกจ MVC ของคุณจะแก้ไขข้อผิดพลาด หากคุณไม่สามารถอัปเดตด้วยเหตุผลใดก็ตามคุณจะต้องตั้งค่า System.Web.Mvc.dll ให้คัดลอกภายในเครื่อง
Vinney Kelly

1
ผมมีปัญหาเหมือนกัน. อัพเดตแพ็กเกจและตั้งค่า copy local = true ขอบคุณทุกคน !!!!
Vackup

1
MVC Copy local = true +1
Stanomatic

4
เกิดขึ้นกับฉันเหมือนกัน ต้องตั้งค่า MVC เพื่อคัดลอก local = FALSE สร้างใหม่คัดลอก local = TRUE สร้างใหม่ ทั้งหมดดี.
Jeppebm

38

ปกติแล้วอันนี้จะจับฉันเมื่อฉันเรียกใช้จาก IIS และกลุ่มแอพสำหรับไซต์เริ่มต้นถูกตั้งค่าเป็น. NET เวอร์ชัน 2.0 เมื่อใช้ IIS จาก visual studio มันจะสร้างไดเรกทอรีเสมือน แต่ยังคงทำงานภายใต้กลุ่มแอพเริ่มต้นของไซต์ หากใช้บิลด์ในเว็บเซิร์ฟเวอร์ให้คลิกขวาที่โปรเจ็กต์เว็บของคุณไปที่คุณสมบัติและตรวจสอบให้แน่ใจว่าคุณใช้งานภายใต้. NET เวอร์ชันที่ถูกต้อง ใน IIS ให้ตรวจสอบเวอร์ชั่น. NET บนกลุ่มแอป

ต่อไปนี้จากความคิดเห็นล่าสุดของฉันเกี่ยวกับวิธีการสร้างโครงการ - คุณถูกต้องรวมถึงการประกอบดังต่อไปนี้ (นำมาจากไฟล์ web.config เริ่มต้นที่สร้างขึ้นโดยแม่แบบโครงการ MVC3 ใน VS10):

<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=1.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=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
      </assemblies>
</compilation>

2
โครงการทั้งหมดตั้งค่าให้ใช้. NET Framework 4.5 หมายความว่า. NET 4.5 ไม่พบ System.Web.Mvc.Ajax และคลาสอื่น ๆ
J.Olufsen

ปกติแล้วมันหมายความว่ามันถูกตั้งค่าให้ทำงานเป็น 4.5 แต่จริงๆแล้วทำงานเป็นอย่างอื่นหมายความว่ามันไม่สามารถหา System.Web.Mvc.Ajax ใน System.Web.Mvc
BlackSpy

นอกเหนือจากรุ่น System.Web.dll ของคุณคืออะไร เหตุผลที่ฉันถามคือคุณบอกว่าคุณเพิ่มชุดประกอบจาก NuGet - คุณไม่ได้สร้างโครงการเว็บ MVC3 หรือไม่?
BlackSpy

31

คุณต้องอัปเดต MVC

  1. ไปที่เครื่องมือ -> ตัวจัดการแพ็คเกจ NuGet -> จัดการแพคเกจ NuGet สำหรับโซลูชัน
  2. คลิกที่ "อัพเดท"
  3. อัปเดต "Microsoft ASP.NET MVC"
  4. สร้างโซลูชันใหม่

1
การใช้แพ็คเกจ NuGet นั้นดี แต่สามารถดาวน์โหลดแอสเซมบลีอื่น ๆ จำนวนมากซึ่งอาจไม่จำเป็น แต่สิ่งนี้จะแก้ไขได้
ผ้าใบ

1
มีปัญหาเดียวกันมีค่าหัวบ้าง
Nit

28

ฉันมีปัญหาเดียวกัน - สถานการณ์ของฉันคือฉันอ้างอิง System.Web.Mvc.dll ใหม่จากโฟลเดอร์ lib และฉันไม่ได้ตั้งค่า "Copy Local" เป็นจริง แอปพลิเคชันนั้นคืนค่ากลับไปเป็นเวอร์ชันใน GAC ซึ่งไม่มีเนมสเปซที่ถูกต้อง (Html, Ajax และอื่น ๆ ) อยู่ในนั้นและทำให้ฉันมีข้อผิดพลาดในเวลาทำงาน


16

โซลูชันของฉันอยู่ภายใต้จัดการแพคเกจ Nuget สำหรับโซลูชัน ... - ฉันมีการอัปเดตมากมายที่ต้องทำสำหรับแพ็คเกจบางชุด

ให้ฉันย้อนกลับไปครึ่งก้าวแล้วบอกว่าฉันเมาตัวเองเพราะฉันย้ายโซลูชันและโปรเจ็กต์จากโฟลเดอร์หนึ่งไปยังอีกโฟลเดอร์ ... ดังนั้นสิ่งต่าง ๆ จึงหมดไปเมื่อเทียบกับที่โครงการคิดว่าเป็นอย่างไร ทุกอย่างเคลื่อนไปได้ดี แต่เห็นได้ชัดว่านูเกตจะสับสนเว้นแต่คุณจะใช้วิธีการที่แตกต่างจากที่ฉันทำ

กลับไปที่การแก้ปัญหา ... ฉันก็ไปจัดการแพคเกจ Nuget สำหรับโซลูชั่น ... >> อัพเดท >> Microsoft และ .NETและกดปุ่มอัปเดตทั้งหมด

ทุกอย่างกลับสู่ปกติและมีความสุข


ฉันโพสต์โซลูชันประเภทเดียวกันโดยบังเอิญข้ามการโพสต์ +1 ให้กับคุณ
Tom Stickel

นี่คือการแก้ไขสำหรับฉันเช่นกัน
bradj

โปรดทราบว่าคุณอาจจำเป็นต้องอัปเดต JQuery และ Bootstrap หลังจากทำสิ่งนี้
Carl Onager

การอัปเดตแพ็คเกจแพคเกจ nuget mvc, razor และเว็บเพจให้ฉันในโครงการ MVC5
voam

9

ฉันดาวน์โหลดโครงการ mvc 5 และปัญหาการละเมิดชี้ไปที่

<add namespace="System.Web.Mvc.Ajax" />  

ด้วยข้อความผิดพลาดนี้:

CS0234: The type or namespace name 'Ajax' does not exist in the namespace 'System.Web.Mvc' (are you missing an assembly reference?)

-> ที่ฉันเข้ามาที่หน้าเว็บนี้และลองทำความสะอาดและอื่น ๆ อีกมากมาย ...

สิ่งที่ได้ผลสำหรับฉันก็คือการ

Manage Nuget and Update all the packages.  Then it worked fine.

1
โอ้ฉันจะออกจากการโพสต์ของฉัน แต่ฉันเห็นว่า azarc3 กำลังพูดในสิ่งเดียวกัน upvoting เขา
Tom Stickel

7

การรันคำสั่งต่อไปนี้ในตัวจัดการแพ็กเกจ nuget แก้ไขให้ฉัน:

update-package microsoft.aspnet.mvc -reinstall

2
สิ่งนี้จำเป็นต้องได้รับการสนับสนุนประมาณหนึ่งพันครั้ง
Chazt3n

1
@ Chazt3n ใช้งานไม่ได้สำหรับฉัน แต่มันเป็นคำแนะนำที่ดีดังนั้น +1
Jared Beach

ฉันลองใช้วิธีการอื่น ๆ ทั้งหมดและใช้ตัวจัดการแพคเกจทางเทคนิคถอนการติดตั้งและติดตั้งใหม่และปรับปรุงและสิ่งที่ไม่ ดังนั้นฉันจึงมองโลกในแง่ร้ายเกี่ยวกับคำตอบนี้ แต่หมดหวัง วิธีนี้ใช้ได้ผล
Mahesh

6

คำตอบนี้ค่อนข้างช้าเมื่อได้รับคำถาม แต่บางคนอาจพบว่ามีประโยชน์

วิธีแก้ปัญหาข้างต้นไม่ได้ผลสำหรับฉันใน Visual Studio 2012 ในโครงการท้องถิ่น Net Framework 4.5 MVC สำหรับบริบทฉันทำตามบทช่วยสอนเกี่ยวกับการสร้าง Web Apbbb barebones บน CodeProject ( http://www.codeproject.com/ บทความ / 615805 / การสร้าง -A-Clean-Minimal-Footprint-ASP-NET-WebAPI ) เมื่อฉันพบปัญหานี้

สิ่งที่ใช้ได้ผลสำหรับฉันคือการเพิ่ม "System.Web.Mvc" ลงในการอ้างอิงของแอปพลิเคชันของฉันอย่างชัดเจนแม้ว่าแอปพลิเคชันจะทำการอ้างอิง "System.Web" แล้ว


ขอบคุณ วิธีนี้แก้ไขปัญหาของฉัน (แม้ว่าจะเป็นกับ DevExpress.Web.Mvc)
dferraro

+1 ฉันใช้ MvcSiteMapProvider และเนื่องจากมันไม่สามารถใช้งานกับแอสเซมบลีล่าสุดของ MVC ฉันจึงไม่สามารถทำการ "อัปเดตทั้งหมด" สำหรับแพ็คเกจ Microsoft ASP.Net MVC ผ่านทาง nuget อีกข้อเสนอแนะคือคุณอาจต้องทำ "CopyLocal = True" สำหรับการชุมนุมนี้
user007

เพียงแค่ต้องการผลักดันเว็บแอพพลิเคชั่นดีบั๊กไปสู่สภาพแวดล้อมใหม่ จำเป็นต้องเพิ่ม "คัดลอกท้องถิ่น" เพื่อการอ้างอิง
dudeNumber4

4

ฉันมีปัญหาเดียวกัน แต่ไม่มีข้อใดดีกว่าสำหรับฉัน พวกเขาทำให้ฉันไปในทิศทางที่ถูกต้อง

ตัวอย่างเช่นเมื่อฉันตั้งค่า "Copy Local" เป็น "true" สำหรับการอ้างอิง System.Web.Mvc มันจะตั้งค่ากลับเป็น False โดยอัตโนมัติ

ฉันมีหลายโครงการซึ่งขึ้นอยู่กับการอ้างอิงของ System.Web.Mvc ในโซลูชันของฉัน แต่มีเพียงหนึ่งโครงการเท่านั้นที่ทำให้เกิดปัญหานี้ ใน VS 2012 การอ้างอิงนี้มีป้ายกำกับที่มีรูปสามเหลี่ยมสนใจ

ค้นหาการอ้างอิงนี้ => ลบออก => เพิ่มใหม่อีกครั้ง

นั่นแก้ไขให้ฉัน หวังว่านี่จะช่วยได้


3

ดูและตรวจสอบเส้นทางอ้างอิงใน csproj ของคุณ

ฉันได้ลบการอ้างอิงถึง System.Web.Mvc (และอื่น ๆ ) และอ่านพวกเขาไปยังเส้นทางที่กำหนดเอง C:\Project\OurWebReferences

อย่างไรก็ตามหลังจากทำสิ่งนี้แล้วเส้นทางอ้างอิงในภาพนิ่ง csproj จะไม่เปลี่ยนแปลง WAS

<Reference Include="System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>..\..\..\..\OurWebProject\bin\Debug\System.Web.Mvc.dll</HintPath>
</Reference>

เปลี่ยนเป็นด้วยตนเอง

<Reference Include="System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
        <HintPath>..\..\..\..\OurWebReferences\System.Web.Mvc.dll</HintPath>
</Reference>

เส้นทางเป็นตัวอย่างเท่านั้น



2

คัดลอก Local = True ได้รับการแก้ไขสำหรับหนึ่งในโครงการของฉัน แต่ในโครงการอื่นฉันได้รับข้อผิดพลาดเดียวกันพยายามตั้ง Copy Local = true แต่ไม่ได้แก้ปัญหาของฉัน การเปลี่ยนกรอบงานเป้าหมายจาก 4.5.1 เป็น 4.5 ในคุณสมบัติโครงการช่วยด้วยสิ่งนี้


2

ฉันทำอะไรที่โง่จริงๆ (และบางทีคุณก็ทำเหมือนกัน)

ฉันพยายามโทร System.Web.Mvc.Html.Partial("<Partial Page>")

System.Web.Mvc.Html เป็นเนมสเปซไม่ใช่คลาสและฉันไม่ได้อ่านข้อความแสดงข้อผิดพลาดดังนั้นฉันจึงตีความข้อผิดพลาดของฉันเนื่องจากคลาสHtmlไม่มีอยู่ในเนมสเปซ System.Web.Mvc และนั่นเป็นวิธีที่ฉันสิ้นสุด ขึ้นที่นี่ (โง่ฉันรู้)

สิ่งที่ฉันต้องทำคือเพิ่มคำสั่งการใช้@using System.Web.Mvc.Htmlไปยังหน้าของฉันแล้ว@Html.Partialทำงานตามที่คาดไว้


Visual Studio 2015 จะตั้งค่าสถานะการใช้งานตามที่ไม่จำเป็น แต่ถ้าคุณให้ลบออกคุณจะได้รับข้อผิดพลาดเช่น: "ชื่อประเภทหรือชื่อ 'ผู้ช่วยเหลือ' ไม่มีอยู่ใน namespace 'Microsoft.Web' (คุณหายไปหรือไม่ การอ้างอิงชุดประกอบ?) "
justdan23

1

หากสิ่งใด ๆ ข้างต้นไม่สามารถแก้ปัญหาของคุณได้เพียงตั้งค่าคุณสมบัติของ System.Web.Mvc.dll เพื่อคัดลอก ture ในเครื่อง

มันจะแก้ปัญหา


1

ฉันมีปัญหาเดียวกัน แต่ในกรณีของฉันมาจากปัจจัยอื่น ฉันเขียนสิ่งนี้เพื่อช่วยเหลือผู้อื่นที่มีปัญหาเดียวกัน ฉันมีทางออกสำหรับหลาย ๆ โครงการ สองตัวทำงานร่วมกับ System.Web.Mvc โดยปกติการอ้างอิงของเราจะชี้ไปที่แพ็คเกจภายนอกซึ่งเราควบคุมเวอร์ชันที่ใช้แล้ว ด้วยเหตุผลบางประการหนึ่งในการอ้างอิงโครงการไปที่ GAC และชี้ไปที่ GAC dll (รุ่น 4.0.0.1) และโปรแกรมได้รับข้อผิดพลาด หากต้องการแก้ไข:

ตรวจสอบง่ายๆว่าการอ้างอิงถึง System.Web.Mvc ชี้ไปที่ dll เดียวกันในเส้นทางไดเรกทอรีเดียวกัน

ฉันหวังว่าจะช่วย


1

ฉันได้ลบ System.Web.dll จาก Bin frolder ของเว็บไซต์ของฉัน


ฉันกรณีของฉันใช่ ฉันเปลี่ยนมาใช้สาขาเก่าที่ไม่มี MVC และ System.Web.dll ในโฟลเดอร์ช่องเก็บของฉันหัก
andre719mv

1

ฉันมีปัญหานี้การตั้งค่าการคัดลอกและเปิดภายในเครื่อง ฯลฯ ไม่ทำงาน โครงการไม่ได้ใช้ nuget เพื่อแก้ไขปัญหาที่เกิดจากคำถามเช่นกัน

การแก้ไขสำหรับฉันคือการติดตั้ง MVC 3 (ซึ่งฉันทำผ่านโปรแกรมติดตั้งแพลตฟอร์มเว็บ)

ฉันสงสัยว่าสิ่งนี้จะกลายเป็นทางออกสำหรับผู้คนมากขึ้นเนื่องจากกรอบงาน. net ยังคงก้าวหน้าและผู้คนไม่ได้ติดตั้ง MVC แบบเก่า


1

อาจเป็นไปได้ว่าการตั้งค่า DLL ของคุณเป็น CopyLocal / true หรือการแก้ไขที่สำคัญอื่น ๆ สำหรับสิ่งนี้จะแก้ไขปัญหาของคุณได้

เมื่อคุณเพิ่มเนมสเปซของคุณใน Views / Web.config ให้ตรวจสอบว่าใส่ซองถูกต้อง:

  <system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <pages pageBaseType="System.Web.Mvc.WebViewPage">
      <namespaces>
        <add namespace="THE.NameSpace" />
        <add namespace="THE.Namespace" />
      </namespaces>
    </pages>
  </system.web.webPages.razor>

1

ตกลงผู้คนจำนวนมากดูเหมือนจะประสบปัญหานี้ ปัญหาของฉันเกิดจากการอ้างอิงที่มีเส้นทางไปยังโฟลเดอร์ช่องเก็บของโครงการอื่น ๆ หรืออ้างอิง Dll จากโฟลเดอร์ระบบ โครงการมีอายุประมาณ 6 ปีและผู้พัฒนาคนก่อนตัดสินใจว่านี่คือวิธีที่พวกเขาจะอ้างอิงห้องสมุดของพวกเขา

การแก้ปัญหาคือการผ่านทุกการอ้างอิงและตรวจสอบเส้นทางแล้วลบการอ้างอิงและเพิ่มโดยใช้ NuGet สำหรับแพ็คเกจใด ๆ ที่ไม่ได้อยู่ใน NuGet ฉันสร้างโฟลเดอร์อื่นควบคู่ไปกับแพ็คเกจและวาง dll ไว้ที่นั่นในเลย์เอาต์เดียวกันกับที่ NuGet ต้องการ

ฉันต้องผ่านไฟล์ปรับแต่งและตรวจสอบให้แน่ใจว่ามีการใช้แพ็คเกจที่ถูกต้อง กระบวนการที่ยาวนานและเจ็บปวด!


1

ฉันมีโครงการที่ทำสิ่งนี้ทุกครั้งที่ฉันสร้างด้วยการเปิดมุมมอง ทันทีที่ฉันปิดมุมมองข้อผิดพลาดจะหายไปและการสร้างสำเร็จ ที่แปลกมาก.


0

ฉันมีปัญหาเดียวกันไม่มีวิธีแก้ปัญหาใดที่เหมาะกับฉันในที่สุดฉันก็ลบออกSystem.Web.MVCและเพิ่มอีกครั้งจากนั้นทุกอย่างกลับสู่ปกติและปัญหาของฉันได้รับการแก้ไข

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.