サーバー側のレンダリングとバンドルを含む、 ReactJS.Netで動作するように ASP.Net MV5 アプリケーションをセットアップしようとしています。
残念ながら、次の例外で失敗します。
タイプ 'React.TinyIoC.TinyIoCResolutionException' の例外が React.dll で発生しましたが、ユーザー コードで処理されませんでした
追加情報: タイプを解決できません: React.ReactEnvironment
この例外は次の行で発生します。
@Scripts.Render("~/bundles/ui-components")
この行は私の_layouts.cshtml
ファイルです。
問題を解決するにはどうすればよいですか?
詳細を説明するために、ここで私がやったこと:
BundleConfig.cs で:
bundles.Add(new ScriptBundle("~/bundles/reactjs").Include( "~/Scripts/react/react-{version}.js")); bundles.Add(new JsxBundle("~/bundles/ui-components") .Include("~/content/ui/components/*.jsx"));
すべてのjsxファイルを含む「Content/ui/components」フォルダーを作成しました(実際には、チュートリアルから取得した「commentsbox.jsx」ファイルは1つだけです。
ReactConfig.cs では、
WebActivatorEx.PreApplicationStartMethod
属性を削除しました。これは、Owin コンポーネントの利益のために、MVC5 ではサポートされなくなったためです。静止画には以下が含まれます:public static class ReactConfig { public static void Configure() { ReactSiteConfiguration.Configuration .AddScript("~/content/ui/*.jsx"); } }
私の
Global.asax.cs
ファイルでは、メソッドを明示的に呼び出してフックReactConfig.Configure
を置き換えます。WebActivatorEx.PreApplicationStartMethod
public class MvcApplication : System.Web.HttpApplication { protected void Application_Start() { ReactConfig.Configure(); AreaRegistration.RegisterAllAreas(); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); } }
私の
_layouts.cshtml
ビューには(ファイルの下部に)含まれています:@Scripts.Render("~/bundles/jquery") @Scripts.Render("~/bundles/bootstrap") @Scripts.Render("~/bundles/reactjs") @Scripts.Render("~/bundles/ui-components") @RenderSection("scripts", required: false) @Html.ReactInitJavaScript()
私の見解の1つでは:
@{ ViewBag.Title = "Home Page"; } <div id="content"></div> @section scripts { @Html.React("CommentBox", new {}, containerId:"content") }
そして最後に、私のjsxファイル:
var CommentBox = React.createClass({ render: function() { return ( <div class="row"> <div class="col-md-4"> hello </div> </div> ); } });