2011-05-24 82 views
0

我有一個ASP.NET MVC3(使用Razor)應用程序,允許用戶爲視圖指定組件 - 就像佈局或用於呈現內容的部分。 (例如,我有一個模型,其中有一個TitleDescription,我允許用戶在特定目錄中指定一個CSHTML部分,用於呈現數據。)Razor和爲用戶創建助手:Html。*

我遇到的問題是隔離和易用性爲我的用戶。例如,他們目前可以寫在他們的諧音碼,如:

@Html.ActionLink("edit", "Edit", "Content", new { Id = Model.Id }, null) 

我反而像他們寫的東西,如:眼下

@SomeHelper.EditLinkFor(Model.Id) 

我的控制器是公共API的一部分。用戶需要知道控制器和動作名稱以指定某些鏈接(例如,編輯鏈接)。我想提供一個簡化的API。

但我該怎麼做呢?如果我只創建SomeHelper課程,試圖撥打@Html.ActionLink並沒有取得很大進展。我試過寫:

return System.Web.Mvc.Html.LinkExtensions.ActionLink(null, content.Title, "Details", "Content", new { Id = content.Id }, null); 

但是我得到一個空指針異常。爲第一個參數創建一個HtmlHelper實例並不容易。

我有什麼選擇?我堅持讓他們完全訪問我的所有控制器作爲我的API的一部分?有沒有辦法爲他們的消費提供簡化的API? (我並沒有試圖阻止他們寫Razor代碼;只封裝和簡化調用,並消除了我的控制器和模型的依賴關係。)

回答

1
+0

選項a很酷,但不是我所需要的;選項b本質上就是答案,儘管我不得不長時間爬到兔子洞才能使它工作。 – ashes999 2011-05-25 14:40:45

+0

我不得不再次問,是否有必要去反對MVC的簡單控制器/動作語法?沒有經驗的用戶?控制器/操作語法使得它變得簡單,任何知道MVC的人都可以輕鬆找到要遵循的代碼。 – 2011-05-25 14:56:30

1

提供的html幫助程序是非常基本的 - 但您肯定可以創建幫手。只需要小心 - 現有的API被提供並完全符合MVC編程模型的其餘部分(Ajax和html助手以及路由語法)

問題在於如何調用代碼。請發佈您的所有代碼,以便我們檢查出來。

問題正是你想要做什麼?你想創建一個幫助 EditLinkFor - 但有些失敗,我們可以看到所有的代碼?

+0

我的問題是沒有這麼多有關特定的代碼,未能真實;我的問題更多的是關於整體設計。我想提供簡化的幫助程序,而不是要求用戶使用(並因此知道)我現有的控制器和視圖。也許我在吠叫錯誤的樹? – ashes999 2011-05-24 20:18:59

+0

Theres沒有說你不能。沒有看到你的路線會多麼複雜,用戶會多麼缺乏經驗,這很難說。但是,控制者具有特定的目的。如果您將其命名爲基本方式並提供文檔,開發人員應該能夠輕鬆使用它。我不知道人的技能水平 - 但是如果你的控制器/方法的基本文檔至少與應用程序中的其他MVC一致。 – 2011-05-25 13:27:38

+0

關於控制器,AJAX和API的+1討論。 – ashes999 2011-05-25 14:16:40