Я работаю над страницей редактора для проекта в ASP.NET MVC.Я хотел бы использовать элемент управления как для страницы создания, так и для страницы редактирования, чтобы мне не пришлось дублировать код.Я установил папку EditorTemplates
внутри /Views/Shared
для хранения моих шаблонов.И я поместил туда файл .ascx с именем ArticlePresentation.ascx
.
ArticlePresentation.ascx
, который выглядит следующим образом:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<genesis.Core.Presentation.ArticlePresentation>" %>
Testing the control
Мой Edit.aspx
вид выглядит следующим образом:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/genesis.Master" Inherits="System.Web.Mvc.ViewPage<genesis.Core.Presentation.ArticlePresentation>" %>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
Edit
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<h2>Edit</h2>
<% using (Html.BeginForm()) {%>
<%: Html.ValidationSummary(true) %>
<%: Html.EditorFor(ArticlePresentation => ArticlePresentation)%>
<% } %>
<div>
<%: Html.ActionLink("Back to List", "Index") %>
</div>
</asp:Content>
Я могу создать сайт без ошибок, но когда я запускаю сайт и просматриваю страницу редактирования, я получаю эту ошибку:
System.Web.HttpParseException не обрабатываетсяпо коду пользователя
Message=The directive 'control' is unknown.
Source=System.Web
ErrorCode=-2147467259
WebEventCode=0
FileName=C:<path to folder>asp.net mvc\genesis\genesis\Views\Shared\EditorTemplates\ArticlePresentation.aspx
Line=2
VirtualPath=/Views/Shared/EditorTemplates/ArticlePresentation.aspx
StackTrace:
at System.Web.UI.TemplateParser.ParseString(String text, VirtualPath virtualPath, Encoding fileEncoding)
at System.Web.UI.TemplateParser.ParseFile(String physicalPath, VirtualPath virtualPath)
at System.Web.UI.TemplateParser.ParseInternal()
at System.Web.UI.TemplateParser.Parse()
at System.Web.Compilation.BaseTemplateBuildProvider.get_CodeCompilerType()
at System.Web.Compilation.BuildProvider.GetCompilerTypeFromBuildProvider(BuildProvider buildProvider)
at System.Web.Compilation.BuildProvidersCompiler.ProcessBuildProviders()
at System.Web.Compilation.BuildProvidersCompiler.PerformBuild()
и т. д. ... и т. д. и т. п. *
Я искал решения в Google, но все, что я нашел до сих поротносится к наличию элемента управления на странице aspx, а не на странице ascx.
Кто-нибудь знает, что может быть причиной этой ошибки?