2010-04-22 80 views
7

我遇到了兩個建議,用於創建自定義html助手:或者擴展現有的助手,或者編寫自己的類。mvc創建我自己的html助手,我如何訪問httpcontext?

我寧願將我的自定義代碼分開,對於體面大小的應用程序擴展幫助程序似乎有點草率。

但我在擴展中看到的好處是'This HtmlHelper helper'作爲參數傳遞,通過它我可以獲得ViewContext.HtmlContext。

我的問題是,我如何推出自己的幫助類,並仍然有ViewContext.HtmlContext可用於我?

謝謝!

編輯: 我正在做的是創建「MyHelperClass」,它將呈現一些自定義對象爲html。我沒有看到需要「擴展」Html幫手,因爲我沒有使用它提供給我的任何東西。正如你所說的,我現在必須擴展htmlhelper的唯一原因是訪問httpcontext。但我的問題是,如何在我自己的類中訪問httpcontext,而無需擴展現有的幫助器。感謝

+1

不明原因downvotes是真正有用 – 2010-04-23 18:08:47

回答

12
public static class HtmlHelperExtensions 
{ 
    public static HttpContextBase GetContext(this HtmlHelper htmlHelper) 
    { 
     return htmlHelper.ViewContext.HttpContext; 
    } 
} 
+1

'不能轉換類型system.web.httpcontextbase到system.web.httpcontext'。 。該方法應該返回httpcontextbase嗎? – 2010-04-22 19:58:00

+0

@rj,是的,你是對的,應該是 – mxmissile 2010-04-22 20:03:06

+0

是的,HttpContextBase,我很抱歉。我懷疑你真的會使用這種方法。它更多的是在擴展方法中使用靜態類和方法來訪問HtmlHelper.ViewContext.HttpContext對象的例子。項目在靜態HtmlHelperExtensions類中有很多方法是很常見的。 (但是,我會保留我不喜歡其他線程的擴展方法)。 – bradjive 2010-04-22 20:05:15

1

您還可以使用:System.Web.HttpContext.Current.Request.RequestContext

+0

這讓我想到了我正在尋找的答案。我有一個htmlHelper,我試圖去請求。解? helper.ViewContext.HttpContext.Request - 謝謝 – BrianLegg 2017-08-30 19:21:44

相關問題