我如何使用.cshtml和.html文件与Durandal
How can I use .cshtml and .html files with Durandal
我开始使用DurandalJs框架与asp.net MVC。它工作得很好。
但是现在我需要使用。cshtml文件作为持久性的视图。所以我在根目录中添加了web.config
<add key="webpages:Enabled" value="true" />
但是DurandalJs仍然试图获取。html文件作为视图。
所以我更正viewEngine.js文件:
return {
viewExtension: '.cshtml',
viewPlugin: 'text',
但是现在DurandalJs要求所有的视图文件都应该有"。cshtml"扩展。
所以我可以使用".html"answers"。Cshtml文件在一起?
在main.js中我添加了一行:
viewLocator.useConvention('viewmodels', 'ViewsProxy/GetView?name=', 'ViewsProxy/GetView?name=');
和实现ViewsProxyController如下:
public class ViewsProxyController : Controller
{
public ActionResult GetView(string name)
{
string viewRelativePath = GetRelativePath(name);
string viewAbsolutePath = HttpContext.Server.MapPath(viewRelativePath);
if (!System.IO.File.Exists(viewAbsolutePath))
{
viewAbsolutePath = ReplaceHtmlWithCshtml(viewAbsolutePath);
if (System.IO.File.Exists(viewAbsolutePath))
{
System.Web.HttpContext.Current.Cache.SetIsHtmlView(name, false);
viewRelativePath = ReplaceHtmlWithCshtml(viewRelativePath);
return PartialView(viewRelativePath);
}
throw new FileNotFoundException();
}
FilePathResult filePathResult = new FilePathResult(viewAbsolutePath, "text/html");
return filePathResult;
}
private string ReplaceHtmlWithCshtml(string path)
{
string result = Regex.Replace(path, @"'.html$", ".cshtml");
return result;
}
private string GetRelativePath(string name)
{
string result = string.Format("{0}{1}", AppConfigManager.DurandalViewsFolder, name);
return result;
}
}
所以现在延时应用程序可以使用。html和。cshtml。
你需要修改你的路由以接受cshtml作为MVC路由的扩展。
routes.MapRoute(
name: "Default",
url: "{controller}/{action}.cshtml",
defaults: new { controller = "Home", action = "Index", namespaces: new string[] { "PAWS.Web.Controllers" }
);
您还需要确保您的应用程序池在集成而不是经典的情况下运行。
但我不建议这样做。您应该尝试不让服务器呈现任何HTML。原因如下
看看Durandal viewEngine
和viewLocator
定制,它们允许使用本地'.html'和远程'。
是否可以有多个viewEngine.viewExtension
相关文章:
- 如何播放部分音频文件
- 从桌面读取python文件时高亮显示代码
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 如何使用WCF服务和javascript表单post上传.doc文件
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 如何在生成下载文件时显示加载动画
- 有没有任何方法可以将控制器从文件加载到ui路由器$stateProvider中
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- 正在SharePoint 2013母版页中添加JQuery移动文件
- 如何在php文件中获取$.post-ajax传递的值
- 直接下载文件,而不是从window.open(url)
- 如何在android中使用phonegap将文件从一个文件夹移动/复制到另一个文件夹
- 使用压缩的JavaScript文件(不是运行时压缩)
- 在使用Polymer'加载所有json文件后执行方法;s的核心ajax
- 如何在elfinder插件(一个文件管理器插件)上获得上传前事件
- Javascript运行php文件,然后下载文件
- 如何使用grunt durandal输出两个文件
- Durandal从其他文件中点击调用函数
- 我如何使用.cshtml和.html文件与Durandal