kala-tamin Why am I getting “The directive 'control' is unknown” error in ASP.NET MVC?


Why am I getting “The directive 'control' is unknown” error in ASP.NET MVC?



I'm working on an editor page for a project in ASP.NET MVC. I would like to use a control for both the create page and the edit page so I don't have to duplicate code. I've set up an EditorTemplates folder inside /Views/Shared to hold my templates. And I've placed a .ascx file in there called ArticlePresentation.ascx.

ArticlePresentation.ascx looks like this:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<genesis.Core.Presentation.ArticlePresentation>" %>  Testing the control 

My Edit.aspx view looks like this:

<%@ 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> 

I can build the site without getting any errors, but, when I run the site and browse to the editing page I get this error:

System.Web.HttpParseException was unhandled by user code

 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() 

etc... etc...etc...

I've searched google looking for solutions, but everything I've found so far relates to having the control in an aspx page rather than a ascx page.

Does anyone know what could be causing this error?


How do you serialize a JS array so Asp.net MVC can bind it to a c# list?

1:

ASP.NET asynchronous controllers and calling Sync(); what is “Sync()”?
The reason you are receive ting this error is for the reason this your file has an .aspx extension and not .ascx. how to return different view from different method in controller in MVCRead the error message carefully:. Error while parsing a Json object
ErrorCode=-2147467259. Can I pass an enum into a controller so the Model Binder binds it? WebEventCode=0. Razor/CSHTML - Any Benefit over what we have? [closed] FileName=C:\Documents and Settings\bquakkelaar\Desktop\dropstuff\asp.net mvc\genesis\genesis\Views\Shared\EditorTemplates\ArticlePresentation.aspx. Multiple Types of Authorizations in .NET MVC 2.0
Now rename the file to ArticlePresentation.ascx and everything will job as expected.. Why can't I bind form data directly to action method parameter? Also you could replace this line:.
<%: Html.EditorFor(ArticlePresentation => ArticlePresentation)%> 
with this:.
<%: Html.EditorForModel() %> 


70 out of 100 based on 45 user ratings 280 reviews