ascx working,cshtml not:内容控件

时间:2018-01-10 07:19:03

标签: asp.net razor

这是ascx:

    1   0   0   0   0   0   0 , 

这是新的cshtml:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<List<NavigationEntryViewModel>>" %>
<%@ Import Namespace="WebShop.Models.ViewModels"  %>

<%  if(Model.Count() > 0){ %>
    <ul class="navigation">
        <%  foreach(NavigationEntryViewModel entry in Model)
            {
                Html.RenderPartial("Entry", entry);
            }
        %>   
    </ul> 
<%  } %>

使用ascx运行项目很好,但是当我使用cshtml运行它时出现错误

  

仅在引用a的内容页面中允许内容控件   母版页

我尝试将布局设置为null,但这不起作用。我试图评论Html.RenderPartial,这也不起作用。

视图由

调用
@using WebShop.Models.ViewModels

@model List<NavigationEntryViewModel>

@if(Model.Count() > 0)
{
    <ul class="navigation">
        @foreach(NavigationEntryViewModel entry in Model)
        {
            Html.RenderPartial("Entry", entry);
        }        
    </ul>
}

其中entries是NavigationEntryViewModel的列表。

我输了,能帮忙吗?

2 个答案:

答案 0 :(得分:1)

您的项目似乎同时具有ASPx视图引擎页面和Razor视图引擎视图。虽然MVC允许混合它们,但我看到这种方法的所有情况都会引起其他问题。 无论如何,如果要在项目中同时使用两个视图引擎,请遵循以下提供的建议:

ASP.NET MVC 3: Using multiple view engines in same project

Combining ASP.Net MVC 3 Razor and ASPX View Engines in One Project

答案 1 :(得分:0)

对此的解决方案非常简单......

我将所有文件转换为cshtml,重命名旧文件。问题是,“旧”视图引擎仍然试图加载一些文件。

我不确切知道为什么,但在禁用它之后,它运行正常。因此,当从aspx切换到cshtml时,尽快禁用旧的viewengine以避免那些讨厌的错误。

谢谢你,弗拉基米尔。