我有一個ASP.NET MVC3(使用Razor)應用程序,允許用戶爲視圖指定組件 - 就像佈局或用於呈現內容的部分。 (例如,我有一個模型,其中有一個Title
和Description
,我允許用戶在特定目錄中指定一個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代碼;只封裝和簡化調用,並消除了我的控制器和模型的依賴關係。)
選項a很酷,但不是我所需要的;選項b本質上就是答案,儘管我不得不長時間爬到兔子洞才能使它工作。 – ashes999 2011-05-25 14:40:45
我不得不再次問,是否有必要去反對MVC的簡單控制器/動作語法?沒有經驗的用戶?控制器/操作語法使得它變得簡單,任何知道MVC的人都可以輕鬆找到要遵循的代碼。 – 2011-05-25 14:56:30