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