asp.net-mvc – 建立一个在MVC路由之上做出反应的SPA
我有一个由MVC管理的路由的API.
最重要的是,我想用反应建立一个SPA. 然而,我从我的反应应用程序内部构建的路由无法到达,我从ISS获得404,这里是我的代码中的存根. export default class Layout extends React.Component { render() { <div> <Router history={ hashHistory }> <Route path="/" component={ Home } > <Route path="login" component={ Login } /> </Route> </Router> <div> } 当我执行此代码作为独立的后端,它完美无缺. 提前致谢. 解决方法
正如我在评论中提到的,我可能有一个适合您需求的解决方案.
该解决方案需要MVC控制器和相关的MapRoute(). 一般的想法是使用控制器和cshtml通过MVC提供index.html页面,并在创建browserHistory时在react-router上配置一个基本名称. 这里的关键是basename值必须包含控制器名称的整个路径(没有域). 例如: 给这个控制器: public class ReactController : Controller { public ActionResult Index() { return View(); } } 和cshtml: @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=0" /> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta charset="utf-8" /> <title>app name</title> <link href="path/to/file.css/if/needed" rel="stylesheet" /> </head> <body> <div id="app"></div> <script src="path/to/bundle.js"></script> </body> </html> 和路线地图: routes.MapRoute( name: "reactApp",url: "react/{*pathInfo}",defaults: new { controller = "React",action = "Index",id = UrlParameter.Optional } ); 现在,假设您的应用已在http://example.org/appName/下发布 虽然这可以正常工作,因为您没有将此URL发布回服务器,但当您尝试直接转到“关于”页面时,您将遇到问题.当您使用以下URL发送请求时,服务器将返回404:http://example.org/about/ 我对此问题的解决方法是将react-router包含一个基本名称,该名称包含appName子文件夹(如果有)控制器名称. 我正在使用useRouterHistory并创建browserHistory而不是从react-router导入它 const browserHistory = useRouterHistory(createHistory)({ basename: appName }); appName变量如下: const controller = "/react"; const pathName = window.location.pathname; const appName = pathName.substring(0,pathName.indexOf(controller) + controller.length); 这可以作为函数重构,但基本上它获取控制器名称的路径名(作为MVC应用程序的约定),包括控制器名称.这样,react-router将在每次更改URL时保留此路径.在我们的例子中“appName / react”. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ASP.NET调试模式是否存在安全风险?
- ASP.Net C#ResolveClientUrl里面的类
- asp.net-mvc – MVC“添加控制器”是“无法检索元数据…配置
- asp.net – 使用HTML’readonly =“readonly”’与JavaScri
- asp.net-mvc – Asp.Net MVC中的管理区域
- asp.net – GET与POST真的很重要吗?
- asp.net-mvc – 您对Telerik Extensions for MVC有何看法?
- DateTime数据注释在ASP.NET Core RC2应用程序中不起作用
- asp.net-mvc-4 – 什么是antlr3,为什么默认情况下在VS2012
- asp.net-mvc – 对于MVC,REST是强制性的吗?
- 选择顶部N值,但跳过M个结果
- 用于属性的ASP.NET MVC编辑器模板
- asp.net – dropdownlist在页面重新加载时不会重
- asp.net – Global.asax的方法来自哪里?
- asp.net 删除项目文件/文件夹IIS重启,Session丢
- selectlist – asp.net MVC 4.0下拉列表中的选定
- wcf – .Net Core ReportExecutionServiceSoapCl
- asp.net – 使用MVC2的AJAX请求中的CSRF保护
- asp.net-mvc-4 – 如何输出Request.CreateRespon
- ASP.NET Core 下自定义权限验证