- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
(我一次性发布并回答了这个问题,因为我花了很长时间才弄明白这个问题 - 我希望它能帮助其他人)
更新 - 我也有 posted an issue on the Asp.Net MVC Codeplex Issues board如果您受此影响并且想投票解决问题。 MVC 工具的代码不是开源的,因此我们不能简单地提交拉取请求来进行非常简单的修复。
我们已经升级了一个大型 Web Forms 站点以包含 MVC 4,并且我们打算在可预见的 future 并行运行这两个部分(Webforms 代码库非常庞大,因此无法快速转换)。
对于 MVC 方面的事情,我们打算只使用 Razor 作为我们的 View 。我们最初还将在区域下运行 MVC 代码,因为我们已经拥有一个复杂的专有路由引擎,可以为 Web 表单端重写 URL。
在项目文件和 web.config 中执行了正确的步骤后,我们已经能够很好地运行它,但是有一个小问题。
每当我们在加载项目后第一次执行“添加 View ”时,ASPX 始终是选定的 View 引擎。为避免混淆,我们确实需要将其默认设置为 Razor。
我看过How to make razor the default view engine in existing project和 I'm upgraded my project to Razor view engine, but VS2010 still auto-generates WebForms ;我们在项目中确实有 Razor View - 所以它不能像在项目中至少有一个 Razor View 那么简单。
最佳答案
在 How to make razor the default view engine in existing project 上接受的答案只讲了一半的故事。
正如我在问题中所确定的那样 - 我们在项目中确实有 razor views - 但事实证明你需要在项目中有一个 ~/Views
文件夹才能启动这个逻辑。在我们的例子中,我们为所有 MVC 4+ 代码使用区域,因此我们没有费心创建 ~/Views
文件夹。
我在 Microsoft.VisualStudio.Web.Mvc.UserInterface.MvcAddViewDialog.Init
方法中反射(reflect)了 Asp.Net MVC VS 扩展的添加 View 对话框(我已经添加了我对这段代码)你会找到在对话框首次显示时选择默认 View 引擎的代码:
//find the project's Views folder
ProjectItem viewsFolder = MvcProjectUtil.GetViewsFolder(this.Project);
//if not found, or if a view engine is already cached then skip this
if (viewsFolder != null && string.IsNullOrWhiteSpace(viewEngineName))
{
//has razor views?
bool flag = false;
//has webforms views?
bool flag2 = false;
//scan all folders and files in the project, looking at all file extensions
//if .cshtml or .vbhtml are found, then flag==true
//if .aspx are found, then flag2 == true
//both can be true when this method returns.
this.GetViewTypes(viewsFolder.ProjectItems, ref flag, ref flag2);
//if there's at least one razor view, or if there are no webforms views
if (flag || !flag2)
{
//assign either C# or VB razor view type
viewEngineName = ((this.Project.Kind ==
"{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") ? "VBHTML" : "CSHTML");
}
}
//this'll get bound in the combo on the dialog
this.ViewEngineName = viewEngineName;
如您所见, View 类型的扫描仅在 ~/Views
文件夹中进行 - 它不会寻找区域。
我们所要做的就是添加一个空的 ~/Views
文件夹(尽管我们也为此复制了 Web.Config 以添加 404 处理程序)并在下一次重新加载项目,Razor 在下拉列表中被自动选中。这是因为,如上述 SO 的已接受答案中正确描述的那样,如果找到 Razor View 或在该文件夹中没有找到 webforms View ,则使用 Razor。
关于c# - 在升级到 MVC 4 的网站上,添加 View 对话框始终默认为 ASPX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14873340/
在 ASP.NET 编程的“代码隐藏”风格中,您将代码拆分为两个不同的文件:一个 .aspx 文件和一个 aspx.cs 文件。 (这适用于 C#;对于 VB,则为 aspx.vb。)每个人似乎都决定
在这个项目中你可以看到aspx文件下的aspx.designer.vb和aspx.vb 但是在我的项目中我没有它?? ,, 是什么赋予了?? 我可以通过右键单击然后单击查看代码来查看 vb 代码。 如
我将 my.aspx.cs 文件中的变量值传递到我的 .aspx 文件。当它在 aspx 中时,它的值会发生变化,然后需要返回到 .aspx.cs 文件。但是,它不允许我更改变量的值。有什么建议么?
我在 aspx 页面中使用多个 aspx 用户控件实例时遇到问题。当我尝试通过 Java 脚本获取用户控件元素值时会发生这种情况。 用户控制代码: function ucFun()
我有一个 asp.net 网站,我想知道是否可以将 .aspx 文件调用到另一个 .aspx 文件中。场景是我有 3 个左侧菜单,它们显示在各个页面上。 一开始我只有一个左侧菜单,因此将其添加到我的
我正在使用 C# 和 .NET ASP Web 应用程序开发我的第一个项目。我已成功连接到 SQL 数据库,但如何将输入从 .aspx(html 中)传递到 .aspx.cs(C# 中)? IE。(.
我已经阅读了很多关于同一问题的类似帖子,但这些修复对我不起作用。 我在页面代码的类区域中将变量声明为 Public,并在 Page_Load 子例程中为其分配一个值,但是当我在 javascript
在重命名不同的 ASPX 页面后,我曾多次遇到同样的问题,令我惊讶的是我在 stackoverflow 上找不到遇到同样问题的其他人。 当我运行我的 ASP.NET C# 项目时,调试器给我这样一条消
Select Zone East West North
这是我的 javascript 函数,其中值来自其他页面并且完美接收,但是如何在 cs 页面中检索“divConversation”值。这是我的代码 function myLoad() {
我不是编程新手,而是 Visual Studio、MVC、C#、ASP.NET 和 EXT.NET,即我尝试使用的所有工具的新手。 我正在尝试创建一个 Ext.Net 2.0 MVC4 项目,并获得了
我有一个 HTML 页面和一个 iframe(aspx 页面),如下所示。 Mypage.htm 此 Mypage.htm 将作为来自其他页面的链接提供,用户单击这些页面,Mypage.htm
我们最近设置了一个新的 SSRS 环境,报表的报表管理器 URL 现在为 Reports/Pages/Report.aspx 以前的环境是ReportList/Pages/ReportViewer.a
我正在尝试点击按钮,但我得到了 'ASP.views_home_index_aspx' does not contain a definition for'btnCreateOrder_Click'
我正在尝试将数据从 aspx.vb 页面传递到 aspx 页面。 在 aspx.vb 页面,我在 textbox 中放置了一个值(0 或 1),即 runat="server" 当加载 aspx 页面
我是 asp.net 的新手,正在处理一个有两个 .aspx 页面的问题集。 事件.aspx: 这是网站管理员在已经可用的面板(如事件标题、日期、信息等)的帮助下更新即将举行的事件和网络研讨会的地方。
这是我在 ASP.NET 中尝试执行的操作: 创建一个名为 Main.aspx 的页面。这个页面有一个 DIV 和一个按钮。 浏览器加载 Main.aspx。然后,当我单击该按钮时,我想将页面 Pag
我已经从一个不再可用的人那里继承了一个网站。在已部署的文件夹中,我有 Config.aspx(请参阅代码)。但是我找不到代码隐藏文件。配置页面有效。我在哪里可以找到 .cs 文件? 谢谢
我使用 iframe 来显示一个 aspx 页面,如下所示 this link 在 Displaypdf.aspx.cs 中,我正在显示一个 pdf,如下所示。我在
我的元素中有 2 个 aspx 文件。 first.aspx 页面上有一些内容,当我单击一个按钮时,它将在同一页面上启动一个框架(second.aspx 只有显示日历的代码)。 现在,一旦该日历 (s
我是一名优秀的程序员,十分优秀!