ASP.NET Core MVCアプリケーションでフィーチャーフォルダー構造を使用する方法について、articleを読んだことがあります。私の計画は、フィーチャー・フォルダー構造を使用してWebアプリケーションをより良い方法で整理することです。私はarticleを踏襲していると私は、次のようなIViewLocationExpanderを実装ASP.NET Core MVC:パーシャルビューがカスタムフィーチャーフォルダ構造内に見つかりませんでした
...
wwwroot
Claims
Controllers
Services
Views
Shared
Map
...
:
public class MyViewLocationExpander : IViewLocationExpander
{
public void PopulateValues(ViewLocationExpanderContext context)
{
context.Values["customviewlocation"] = nameof(MyViewLocationExpander);
}
public IEnumerable<string> ExpandViewLocations(ViewLocationExpanderContext context, IEnumerable<string> viewLocations)
{
var viewLocationFormats = new[]
{
"/Claims/Views/{0}.cshtml",
"/Claims/Views/Shared/{0}.cshtml"
};
return viewLocationFormats;
}
}
私は「/に私のメインのClaims.cshtmlビューを置き、すべての まず私のフォルダ構造を見ることができますクレーム/ビュー/ "フォルダ。私Claims.cshtmlの初めに、私は私の部分図描画するために、次の行にあります。_NewClaimPopup.cshtmlについては
@Html.Partial("_NewClaimPopup");
を、それはパス「/クレーム/閲覧/共有」にそれを置きました。 http://localhost:13078/Claims/Claims
InvalidOperationException: The partial view '_NewClaimPopup' was not found. The following locations were searched:
/Views/Claims/_NewClaimPopup.cshtml
/Views/Shared/_NewClaimPopup.cshtml
カスタムパスが成功しIViewLocationExpanderの実装によって追加されたようだ。しかし残念ながら、私は、以下のURLを取得しようとすると、次の例外が発生しました。
追加に関する情報:
- 私は何もしようとしたことIViewLocationExpanderの実装のパスで "〜" 記号なので、使用することです: "〜/クレーム/ビュー/ {0} .cshtml" と「〜を/Claims/Views/Shared/{0}.cshtml "しかし、それは助けにはなりません。
- が、私は私の部分図を描画するための絶対パスを使用しようとしましたが、まだ何も
@ Html.Partial( "" 〜/クレーム/ビュー/ _NewClaimPopup.cshtml ");
そして、もちろん、私はStartup.csで私のエキスパンダーを登録:
services.Configure<RazorViewEngineOptions>(options => options.ViewLocationExpanders.Add(new MyViewLocationExpander()));
なく、少なくとも最後に、私は私のプロジェクトの構造についての画像を添付:
他のアイデアはありますか?助けをあらかじめありがとう!
起動時にカスタムロケーションエクスパンダを登録しましたか? – Rohit
@Rohitよろしくお願いします。コメントありがとう。はい、私はそれを登録しました。 (私はそれで私の質問を更新しました) – mirind4
私はあなたの構造ごとに正確に試しましたが、私の最後にはうまくいきます。あなたのビューの名前などは正しいですか?プロジェクト構造のスクリーンショットを共有できますか? – Rohit