「MVC 3」を使い始めていますが、いくつかの小さな問題に直面しています。私のビューで、次のようなコードを作成すると:
@if(Request.IsAuthenticated) {
<text>Welcome <b>@Context.User.Identity.Name</b>!
[ @Html.ActionLink("Log Off", "LogOff", "Account") ]</text>
}
else {
@:[ @Html.ActionLink("Log On", "LogOn", "Account") ]
}
@Requestや@Htmlなどのオブジェクトはエラーを示しています:The name 'HTML' does not exist in the current context
。
同じことが@ Context、@ ViewBag、@ Layout、@ Urlなどで発生します。
見る:
ただし、コードはエラーなしで正しくコンパイルされます。問題は、ビューでこれらのオブジェクトでIntellisenseを使用できないことです。普通ですか? (私はそうは思わない)。何が起きているのでしょうか?
MVC 3フレームワークを再インストールしましたが、同じことが引き続き発生します。
注:これは、MVC 2の移行ではなく、ゼロからの新しいプロジェクトです。これは、RazorエンジンとASPXの両方で発生します。
これは、Viewsフォルダー内の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=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="Host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=1.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=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>
<appSettings>
<add key="webpages:Enabled" value="false" />
</appSettings>
<system.web>
<httpHandlers>
<add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
</httpHandlers>
<!--
Enabling request validation in view pages would cause validation to occur
after the input has already been processed by the controller. By default
MVC performs request validation before a controller processes the input.
To change this behavior apply the ValidateInputAttribute to a
controller or action.
-->
<pages
validateRequest="false"
pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<controls>
<add Assembly="System.Web.Mvc, Version=3.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>
ありがとう!
私はこの問題を古い、良い、賢明なMicrosoftのデフォルトソリューションで解決しました。すべてを再インストールします。
Visual Studio 2010およびMVC 3フレームワークをアンインストールして再インストールします。
あなたが試すことができます:
偽のエラーでView
を閉じます。
閉じるVisual Studio
同じプロジェクトを再度開く
別のView
を開き、エラーの原因となっているものを開きます
View
を閉じます。うまくいけば、このView
に同様のエラーが表示されないことを願っています。
以前に問題が発生したView
を再度開きます
ソリューションと参照をきれいにします。次に、次のプロパティを設定します。
System.Web.MVC file to Copy Local = True.
エディターで開いていたすべてのビューを閉じて再構築するだけでした。
私のために働いたのは、Visual Studioを閉じ、ユーザーオプションファイル(ソリューションとプロジェクトレベルの両方)を削除してから、Visual Studioを再起動することでした。
私にとっては、これはコンパイラの警告があったという事実のように思えました。コードはまだコンパイルして正常に実行されますが、IntelliSenseが動作し始めるというすべてのビルド警告を修正するまでそうではありませんでした。
System.Web.MVC、Copy Local = Trueのプロパティを設定します
必要なことは、Visual Studioを再起動して確認することだけです。
私はremove解決策でまだ問題が発生しているプロジェクトを再試行し、それを再度追加しました。その後、問題はなくなりました。
ドットネットコアSDK 2.2とVisual Studio Professional 2019を使用しています。
これは、Visual Studioのマングリングコードが原因でした。
かみそりビューにコードが貼り付けられました。 Visual Studioは試行しますが、自動フォーマットに失敗します。失敗の一部により、コードが削除されました。
Ctrl + zを押すとフォーマットは元に戻りますが、貼り付けたコードは保持されます。かみそりのコンパイルエラーが修正されました(The name 'Html' does not exist in the current context
)
貼り付けのフォーマットを無効にします( https://stackoverflow.com/a/28053865/1462295 を参照)。[ツール]-> [オプション]-> [テキストエディター]-> [HTML]-> [詳細]
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v11.0" />
</parameters>
</defaultConnectionFactory>
web.configのこの問題の解決策
ネクロポストについておologiesび申し上げます。
「ビルド|ソリューションのリビルド」を選択すると、Visual Studio 2015でこの問題が修正されました。私の場合、プロジェクトのプライマリネームスペースの名前を変更した後に警告が発生しました。再構築により、すべてがまっすぐになりました。
MVC 4でも同じ問題が発生しました。これらのソリューションはどれもうまくいきませんでした。代わりに、Windowsで、[コントロールパネル]-> [プログラムのアンインストール]に移動しました。プログラムリストで[Microsoft ASP.NET MVC 4]を選択します。 [アンインストール]をクリックします。 「Microsoft ASP.NET MVC 4 Setup」ウィザードが表示されます。 [修復]をクリックします。
パッケージリストからEntityFrameworkをアンインストールした後、ASP.NET MVC 4でもこれを経験しました。
このセクションを削除する必要がありました
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.4.0.0, ....
web.configファイルに残っている...少なくともエラーリストからエラーを削除した
私はASP .net coreを使用しています。Microsoft.AspNetCore.Mvc
from 1.1.2
から1.1.3
。
私にとっては、Visual Studioを再起動しただけで、すべてが修正されました。
同じエラーが1回発生しましたが、モデル内の変数の1つをNULL不可からNULL可能に変更すると修正されました。試してみる。
私はこの質問に答えるのに少し遅れているかもしれませんが、この簡単な修正は私を助けました:
ファイルを右クリックして、「プロジェクトから除外」を選択します。ファイルを右クリックし、「プロジェクトに含める」。
私の場合、MVCとRazorを含むパッケージフォルダーが見つからなかったため、packages.configでパッケージを更新し、ビューを再度開いて機能しました。