Ошибка при создании EditorTemplates в Razor - PullRequest
2 голосов
/ 24 января 2011

У меня есть отлично работающий шаблон редактора ascx в ASP.NET MVC 3, и я попытался преобразовать его в бритву:

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"))
%>

Бритва:

@inherits  System.Web.Mvc.ViewUserControl<Inventory.Models.ProductCategory>

@(Html.Telerik().DropDownList()
    .Name("ProductCategory")
        .BindTo(new SelectList((IEnumerable)ViewData["ProductCategories"], "Id", "Name"))
)

Я переименовал ascx, чтобы он не конфликтовал, когда ASP.NET выбирает шаблон редактора, я сохранил файл бритвы с расширением cshtml, и все такое.Но во время выполнения я получаю эту ошибку:

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");

Что я делаю не так?Разве Razor Editor не распознаются шаблонами ASP.NET MVC?

Ответы [ 2 ]

12 голосов
/ 24 января 2011

Представления бритвы не могут наследоваться от ViewUserControl. Вместо этого вы хотите просто указать модель вашего представления Razor:

@model Inventory.Models.ProductCategory

@(Html.Telerik().DropDownList()
      .Name("ProductCategory")
      .BindTo(new SelectList((IEnumerable)ViewData["ProductCategories"], "Id", "Name"))   ) 
0 голосов
/ 24 января 2011

Убедитесь, что вы не старая версия элементов управления Telerik, которые могут не скомпилироваться для ASP.NET MVC 3.0 (сборка System.Web.Mvc 3.0). Также убедитесь, что вы выполнили инструкции , описанные в документации для выполнения предварительных действий.

...