2011-01-24 158 views
2

創建EditorTemplates我在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")) 
%> 

剃刀:

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

我在做什麼錯? ASP.NET MVC不支持Razor EditorTemplates嗎?

回答

12

剃刀視圖不能從ViewUserControl繼承。 相反,你只想指定Razor視圖模型:

@model Inventory.Models.ProductCategory 

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

D'oh!我完全錯過了:|謝謝!:) – 2011-01-25 06:34:48

0

確保您不是Telerik控件的舊版本,它可能不會針對ASP.NET MVC 3.0(System.Web.Mvc 3.0程序集)進行編譯。還請確保您已按照instructions described in the documentation的先決步驟操作。

+0

我Telerik的最新版本發佈幾天回來。它支持Razor語法。此外,你的代碼和我的功能是一樣的,並且在嘗試時不工作:( – 2011-01-24 15:39:20