在Razor中创建EditorTemplates时出错

Dhe*_*mar 2 asp.net-mvc telerik editortemplates razor asp.net-mvc-3

我在ASP.NET MVC 3中有一个完美的ascx编辑器模板,并尝试将其转换为剃刀:

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"))
%>
Run Code Online (Sandbox Code Playgroud)

剃刀:

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

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

我重命名了ascx,因此当ASP.NET选择编辑器模板时它不会发生冲突,我保存了带有cshtml扩展名的razor文件.但在运行时,我收到此错误:

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");
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?是不是Razor EditorTemplates被ASP.NET MVC认可?

mar*_*ind 12

剃刀观点不能继承ViewUserControl.相反,您只想指定Razor视图的模型:

@model Inventory.Models.ProductCategory

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