gpt4 book ai didi

asp.net - MVC4 托管来自其他 MVC 项目的 View

转载 作者:行者123 更新时间:2023-12-01 05:21:36 24 4
gpt4 key购买 nike

我试图弄清楚如何托管在不同解决方案下构建的 MVC4 应用程序。在 SO 上和网络上有很多使用带有区域的 RazorGenerator nuget 包来执行此操作的示例 - 它运行良好。在我的情况下,我想避免使用区域 - 我公司开发的每个应用程序都将在它自己的 MVC4 项目中(然后在同一个解决方案中)。

我已将 RazorGenerator 集成到我的应用程序中,代码生成器按预期工作。但是,我的主机解决方案在其默认位置找不到 View 。例如,我在一个名为 MyAccount/Index 的应用程序中内置了一个 Controller / View 。

Controller :

namespace Accounts.Controllers
{
public class MyAccountController : Controller
{
//
// GET: /MyAccount/
public ActionResult Index()
{
return View();
}
}
}

View (由 RazorGenerator 生成):
namespace Accounts.Views.MyAccount
{
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Web;
using System.Web.Helpers;
using System.Web.Mvc;
using System.Web.Mvc.Ajax;
using System.Web.Mvc.Html;
using System.Web.Routing;
using System.Web.Security;
using System.Web.UI;
using System.Web.WebPages;

[System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "1.5.4.0")]
[System.Web.WebPages.PageVirtualPathAttribute("~/Views/MyAccount/Index.cshtml")]
public partial class Index : System.Web.Mvc.WebViewPage<dynamic>
{
public Index()
{
}
public override void Execute()
{

#line 1 "..\..\Views\MyAccount\Index.cshtml"

ViewBag.Title = "Index";


#line default
#line hidden
WriteLiteral("\r\n\r\n<h2>Index</h2>\r\n\r\nMy AccountController Index view.");

}
}
}

我知道默认情况下,ViewEngines 将尝试在默认位置(Views 和 Shared)中找到此 View ,因此我将自己的 ViewEngine 添加到 Engines 集合中:

MyViewEngine.cs:
 public class MyViewEngine : RazorViewEngine
{
private static string[] _viewLocations
= new string[]
{
"~/Accounts/Views/{1}/{0}.cshtml"
};

public MyViewEngine()
{
base.ViewLocationFormats = ViewLocationFormats.Union(_viewLocations).ToArray();
}
}

但是,仍然没有找到该 View :
The view 'Index' or its master was not found or no view engine supports the searched locations. 
The following locations were searched:
~/Views/MyAccount/Index.cshtml
~/Views/Shared/Index.cshtml
~/Views/MyAccount/Index.aspx
~/Views/MyAccount/Index.ascx
~/Views/Shared/Index.aspx
~/Views/Shared/Index.ascx
~/Views/MyAccount/Index.vbhtml
~/Views/Shared/Index.vbhtml
~/Accounts/Views/MyAccount/Index.cshtml

也许我误解了 View 的位置 - 我原以为它会在 Accounts/Views/MyAccount/中找到。任何想法我可能做错了什么?

谢谢!

最佳答案

发现我的问题 - 这是由于没有准备好 RazorGeneratorMvcStart 预热代码。添加 nuget 包时,它会自动生成到 App_Start 文件夹中,但是我错误地将其删除。

关于asp.net - MVC4 托管来自其他 MVC 项目的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16241039/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com