Fehler beim Erstellen von Editortemplates in Rasiermesser
-
24-10-2019 - |
Frage
Ich habe eine perfekt funktionierende ASCX -Editor -Vorlage in ASP.NET MVC 3 und versuchte, sie in Rasiermesser umzuwandeln:
ASCX:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Inventory.Models.ProductCategory>" %>
<%= Html.Telerik().DropDownList()
.Name("ProductCategory")
.BindTo(new SelectList((IEnumerable)ViewData["ProductCategories"], "Id", "Name"))
%>
Rasierer:
@inherits System.Web.Mvc.ViewUserControl<Inventory.Models.ProductCategory>
@(Html.Telerik().DropDownList()
.Name("ProductCategory")
.BindTo(new SelectList((IEnumerable)ViewData["ProductCategories"], "Id", "Name"))
)
Ich habe in den ASCX umbenannt, damit sie nicht aufeinander abgestimmt ist, wenn ASP.NET die Editor -Vorlage auswählt. Ich habe die Razor -Datei mit einer CSHTML -Erweiterung gespeichert. Aber in der Laufzeit erhalte ich diesen Fehler:
CS0115: 'ASP._Page_Views_Shared_EditorTemplates_ProductCategory_cshtml.Execute()': no suitable method found to override
Line 44: }
Line 45:
Line 46: public override void Execute() {
Line 47:
Line 48: WriteLiteral("\r\n");
Was mache ich falsch? Sind Razor -Editoremplatten nicht von ASP.NET MVC erkannt?
Lösung
Rasiermesseransichten können nicht erben ViewUserControl
. Stattdessen möchten Sie nur das Modell Ihrer Rasieransicht angeben:
@model Inventory.Models.ProductCategory
@(Html.Telerik().DropDownList()
.Name("ProductCategory")
.BindTo(new SelectList((IEnumerable)ViewData["ProductCategories"], "Id", "Name")) )
Andere Tipps
Stellen Sie sicher, dass Sie keine alte Version der Telerik -Steuerelemente sind, die möglicherweise nicht gegen ASP.NET MVC 3.0 (System.Web.MVC 3.0 Assembly) zusammengestellt werden. Stellen Sie außerdem sicher, dass Sie dem gefolgt sind Anweisungen in der Dokumentation beschrieben Für die Voraussetzungen.