C# 查看路由是否在本地工作,但不是一次部署

C# 查看路由是否在本地工作,但不是一次部署,c#,asp.net-mvc,razor,partial-views,C#,Asp.net Mvc,Razor,Partial Views,在重构“菜单”页面时,我将一个视图分解为多个视图。当我在本地运行该项目时,它起了作用。然而,一旦我签入代码并将其部署到我们的开发环境中,它就不再工作了 原始视图: @model Domain.ViewModel @{ ViewBag.Title = "TabbedIndex"; } <div class="row" style="padding-top:20px"> @foreach(var group i

在重构“菜单”页面时,我将一个视图分解为多个视图。当我在本地运行该项目时,它起了作用。然而,一旦我签入代码并将其部署到我们的开发环境中,它就不再工作了

原始视图:

@model Domain.ViewModel
@{
    ViewBag.Title = "TabbedIndex";
}

<div class="row" style="padding-top:20px">
    @foreach(var group in Model.MenuGroups)
    {
        <div class="col-md-3 menu-group">
            @{
                switch(group.IconType)
                {
                    case "image":
                        <span class="menu-group-icon" style="background-image:url(@group.IconLocation)"></span>
                        break;
                    case "glyphicon":
                        <span class="glyphicon glyphicon-@group.IconLocation"></span>
                        break;
                }
            }
            <h3>@group.Text</h3>
            <ul>
                @foreach (var item in group.Items)
                {
                    <li>
                        @if (item.Active)
                        {
                            <a href="@item.URL">@item.Text</a>
                        }
                        else
                        {
                            @item.Text
                        }
                    </li>
                }
            </ul>
        </div>
    }
</div>
MenuRow.cshtml

@model Domain.Menu
@{
    ViewBag.Title = "TabbedIndex";
}

@foreach (var row in Model.MenuRows) { @Html.Partial("MenuRow", row); }
@model Domain.MenuRow
<div class="row" style="padding-top:20px">
    @foreach (var group in Model.Groups) { @Html.Partial("MenuGroup", group); }
</div>
@model Domain.MenuGroup
<div class="col-md-3 menu-group">
    @{
        switch (Model.IconType)
        {
            case "image":
                <span class="menu-group-icon" style="background-image:url(@Model.IconLocation)"></span>
                break;
            case "glyphicon":
                <span class="glyphicon glyphicon-@Model.IconLocation"></span>
                break;
        }
        <h3>@Model.Text</h3>
        <ul>
            @foreach (var item in Model.Items) { @Html.Partial("MenuItem", item); }
        </ul>
    }
</div>
@model Domain.MenuItem
<li>
    @if (Model.Active)
    {
        <a href="@Model.URL"
           @Html.Raw(string.IsNullOrWhiteSpace(Model.Description) ? "" : "data-toggle='tooltip'")
           title="@Model.Description">@Model.Text</a>
    }
    else { @Model.Text; }
</li>
所有这些都在当地奏效。我运行了它,菜单出现了,我能够点击链接并进入正确的页面。然而,一旦它被部署到我们的开发环境中,菜单就出错了。我们得到的错误是:

System.InvalidOperationException: The partial view 'MenuRow' was not found or no view engine supports the searched locations. The following locations were searched: ~/Views/Home/MenuRow.cshtml
我尝试了相对路径:

~/Views/Home/MenuRow.cshtml
我最初在他们自己的StartMenu文件夹中试用过:

../StartMenu/MenuRow
我尝试了部分渲染而不是部分渲染

有一次,我在Html.RenderPartial前面没有“@”,但当我将其更改为Html.Partial时,我不得不添加它

我不认为局部视图名称必须有下划线(我认为这只是一种命名约定)

如果你能帮我解决这个问题,我将不胜感激。我一辈子都不明白为什么它在本地工作,但在开发环境中却不行。开发环境是否有可能与我在本地使用的视图引擎不同?如果是这样,我将如何检查


我已经将它们合并到一个视图中,现在可以使用了。但是,我希望最终将这些文件再次分解,以保持文件的小。

您是否尝试了没有前导“/”的路径,例如视图/主页/菜单。cshtml@KevRitchie我没有。我看到的每个例子都是以“/”开头的。或者在一次tilda之后,或者两次月经之后。只是想知道你是否尝试一下?
../StartMenu/MenuRow