2011-09-09 60 views
1

我正在嘗試構建一個AjaxHelper擴展,並且似乎遇到了SNAFU。MVC AjaxHelper擴展 - 系統找不到它?

查看:

<%= Ajax.DeleteLink("Delete", "LicenseDelete", "Directory", new { LicenseID = license.ID }, new { @class = "directory button" }); %> 

擴展:

using System; 
using System.Collections.Generic; 
using System.Web.Mvc; 
using System.Linq.Expressions; 
using System.Web.Routing; 
using System.Web.Mvc.Ajax; 

namespace RainWorx.FrameWorx.MVC 
{ 
    public static class HtmlExtensions 
    { 
     public static MvcHtmlString DeleteLink<TModel>(this AjaxHelper<TModel> ajaxHelper, string linkText, string actionName, string controllerName, object routeValues, object htmlAttributes) 
     { 
      return ajaxHelper.ActionLink(linkText 
             , actionName 
             , controllerName 
             , routeValues 
             , new AjaxOptions { Confirm = "Are you sure you want to delete this item?", 
                  HttpMethod = "DELETE", 
                  OnSuccess = "function() { window.location.reload(); }" } 
             , htmlAttributes); 
     } 
    } 
} 

瀏覽器的結果:在 '/' 應用

服務器錯誤。
編譯錯誤
描述:編譯服務此請求所需的資源 時發生錯誤。請仔細閱讀以下具體的 錯誤詳細信息並適當修改您的源代碼。

編譯器錯誤消息:CS1061: 'System.Web.Mvc.AjaxHelper < RainWorx.FrameWorx.MVC.ViewModels.DirectoryEdit>' 不包含關於 'DeleteLink' 的定義和沒有擴展方法 'DeleteLink' 接受類型的第一個參數 「System.Web.Mvc.AjaxHelper < RainWorx.FrameWorx.MVC.ViewModels.DirectoryEdit>」 可以找到(是否缺少使用指令或程序集 引用?)

我錯過了什麼(明顯的)事情?我可以在我的擴展方法中發誓第一個參數確實幾乎接受我選擇拋棄它的任何模型。

TIA

-kb

+0

難道他們都在同一個命名空間? –

回答

3

您可能需要在web.config中或在視圖本身中註冊名稱空間。

查看示例使用的WebForms:

<%@ Import Namespace="RainWorx.FrameWorx.MVC" %> 
使用剃刀視圖引擎瓦特/ C#

http://msdn.microsoft.com/en-us/library/eb44kack.aspx

查看示例:使用剃刀視圖引擎瓦特/ VB.NET

@using RainWorx.FrameWorx.MVC 

查看示例:

@Imports RainWorx.FrameWorx.MVC 

How do I import a namespace in Razor View Page?

的Web.Config例如:

<system.web> 
    <compilation> 
     <add assembly="RainWorx.FrameWorx.MVC" /> 
    </compilation> 
</system.web> 

http://msdn.microsoft.com/en-us/library/bfyb45k1.aspx

+0

我選擇了這個答案,因爲它更完整,並在亞當的答案後不久。 –

+0

注意:我嘗試了web.config添加,它不起作用。我回到了同樣的錯誤。我甚至手動循環所有的應用程序池等。蘇茨基! –

+0

檢查msdn鏈接,因爲您需要在web.config中使完全限定的程序集名稱正確才能正常工作。 –

2

包含在你看來你的擴展名稱空間。這幾乎總是原因。

+0

是的 - 我錯過了一些重要的東西!哈哈謝謝! –