我已经在Dot Net Core应用程序中修改了Map Route,对于每个请求都将其发送给一个控制器,因此我们构建的每个页面都不需要很多控制器或Action Result。
routes.MapRoute("", "/{*article}",
defaults: new { controller = "Pages", action = "Killme" });
在Page Controller中构建一个具有CSS和JavaScript位置列表的对象,该对象将传递给Page视图
public IActionResult Killme()
{
var PageInfo = GetPage_Data();
ViewBag.PageInfo = t;
return View("Pages");
}
,并且我试图将此信息作为模型或视图包传递给Page视图。 在页面视图中,我尝试基于
之类的模型动态构建JavaScript和CSS<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
@{
RootObject PageInfo = ViewBag.PageInfo;
foreach (var JavaScript in PageInfo.js)
{
var JSsrc = JavaScript.src;
<script type="text/javascript" src="@JSsrc ">
</script>
}
<script type="text/javascript" src=""></script>
</head>
<body>
</body>
</html>
现在的问题是,当我构建JavaScript时,当我注释
时,控制器被调用2次,页面被呈现2次。 <script type="text/javascript" src="@JSsrc ">
</script>
页面控制器将被调用一次,
关于此事发生的原因以及我在做什么错的任何帮助,都将受到感谢答案 0 :(得分:1)
此行为的原因是未配置staticFileHandler或无法找到您的Javascript文件,无法将请求进一步传递到管道中。 MVC处理程序捕获所有请求(由于您的路由),因此再次返回同一页面。
首先请检查您的启动类在mvcHandler之前是否使用staticFileHandler,如下所示:
public class Startup
{
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseStaticFiles();
..
app.UseMvc();
}
}
其次,确保将Javascript放在wwwroot内并使用正确的路径。因此, wwwroot / js / mysite.js 之类的文件应使用如下脚本标记:
<script src="/js/mysite.js"></script>
这些改进应该可以解决您的问题。