1

ファイルまたはデータベースから仮想ビューを保存および取得する方法を示す例はたくさんありますが、ビューのコンテンツがファイルから取得され、たとえば、@ViewBag.Title = "Some Title"行。

この場合、 CS0103が表示されます。〜/ Viewsプロジェクトフォルダーからweb.configを削除した場合と同様に、現在のコンテキストエラーには「ViewBag」という名前は存在しません。

では、上記のエラーを修正するために、〜/ Views /web.configからrootweb.configまでの構成要素は何ですか?

実行時に構成要素をアセンブリにロードすることは可能ですか?

4

2 に答える 2

1

この問題は、仮想ビューの場合、コンテンツがファイルまたはデータベースから取得されたビューが、System.Web.Mvc.ViewStartPageHtmlおよびUrlを含むが、ViewBagまたはAjaxプロパティを含まないビューを継承するという事実に関連しています。仮想ビューは次のように参照されます

public class DynamicViewsController : Controller
{
    public ActionResult GetView()
    {
        //SomeModel model = new SomeModel() { Count = 1 };
        return View("/Virtual/VirtualViewToShow.cshtml");
    }
}

〜/ Views /フォルダーにあるビューは、ViewBagとViewData、およびAjaxプロパティが定義されているSystem.Web.Mvc.WebViewPageを継承します。

アクションメソッドを次のように変更するための回避策

public PartialViewResult GetView()
{
    //SomeModel model = new SomeModel() { Count = 1 };
    return PartialView("/Virtual/VirtualViewToShow.cshtml");
}

と追加する

  @{
        Layout = "~/Views/Shared/_Layout.cshtml";
   }

レイアウトもロードするために、仮想ビューのテキストに。仮想ビューがから継承する理由はわかりませんがSystem.Web.Mvc.ViewStartPage、別のスレッドでその理由を見つけようとし、スレッドが作成されたときにリンクを投稿します。

編集済み

つまり、新しく作成されたスレッドへのリンクはここにあります

「完全なコンパイルソースを表示」のスクリーンショットを添付ここに画像の説明を入力してください

于 2012-11-13T14:55:41.433 に答える
0

前述の手順に従ってください。完了です。

  • ~/views/web.config の<configSections>セクションをルート レベルの web.config とマージします。
  • <system.web.webPages.razor>セクションを ~/views/web.config からルート レベルの web.config に移動するだけです。
  • 乾杯 :) 完了です。
  • また、<appSettings>、<system.web>、および <system.webServer>をルート レベルの web.config とマージする必要があります。
于 2012-11-09T17:33:12.723 に答える