.cshtmlファイルでカスタム名前空間のモデルを使用しようとしています。ただし、モデルを設定しようとすると、RazorはThe type or namespace name could not be found
エラーをスローします。
以下に示すように、組織化を支援するためにソリューションフォルダーを使用するプロジェクトセットアップがあります。
MyViewModel.csファイルのコードは次のようになります。
namespace MyProject.ViewModels
{
public class MyViewModel
{
}
}
これが基本的なレイアウトです。問題は、Razorビューでオブジェクトを使用しようとするとMyViewModel
、名前空間が見つからないとRazorが言うことです。ここに示されているように:
私は自分がすべきことをすべてやっていると信じています。Razorがソリューションフォルダを調べていないようです。MyViewModel
オブジェクトをRazorに認識させるにはどうすればよいですか?足りないものはありますか?
注意:@using
パス全体を参照するようにステートメントを変更するだけでよいことを認識しています。ただし、私のプロジェクトでは、ViewModelsフォルダー内に多くのソリューションフォルダーがあり、それぞれを調べて指定したくありません。
アップデート
質問にうまく答えたので、私はダリンの答えを受け入れました。また、私の特定の状況と、この質問が出た理由について、以下にいくつかの情報を提供しました。
私はこの問題をもう少し調べて、何が起こっているのかを理解しました。私は通常、次のようにビューモデルを参照できるSparkViewEngineを使用します。Razorが<viewdata model="ViewModels.MyViewModel"/>
同じ方法でビューモデルを参照することを許可しなかったとき、Razorに何か問題があると思いました。
各ViewEngineは、ビューの生成を支援するために使用される一時CSファイルを作成します。Sparkによって作成された一時ファイルは、「controllers」名前空間を使用します。この場合、SparkはMyProject.Controllers
一時的なCSファイルで名前空間を使用します。これはViewModels.MyViewModel
、生成されたCSファイルと同じ名前空間にあるため、完全な名前空間を指定せずにオブジェクトを参照できることを意味します。
Razorによって生成される一時ファイルは、ASP
名前空間を使用します。ViewModels.MyViewModel
これは、生成されたCSファイルと同じ名前空間にないため、完全な名前空間を指定せずにオブジェクトを参照できないことを意味します。