簡體   English   中英

HTML Helper方法未在MVC視圖頁面中輸出結果

[英]Html helper method not outputting results in mvc view page

我的助手看起來像:

public static string OutputBlah( this HtmlHelper helper )
{

 return htmlWriter.InnerWriter.ToString();
}

然后在我的頁面中:

<%= MyHelpers.OutputBlah() %>

這應該工作還是我錯過了什么? 錯誤表示沒有接受0個爭論的重載。

我應該在視圖中傳遞給我的方法什么?

您試圖通過使用靜態方法調用來調用擴展方法。 您可以將代碼更改為

<%= MyHelpers.OutputBlah(Html) %>

但是您可能應該更改它以使其像適當的擴展方法一樣使用:

<%= Html.OputputBlah() %>

為此,您需要在頁面頂部<%@ Import Namespace =“ YourHelperNameSpace”%>。 或將其添加到web.config節點。

類聲明是什么樣的? 確保您也使類本身成為static

public static class MyHelpers
{
    public static string OutputBlah(this HtmlHelper helper)
    {
        return helper.InnerWriter.ToString();
    }
}

然后在View使用HtmlHelper類型的常規Html屬性:

<%= Html.OutputBlah() %>

OP后續問題的答案:

聲明這樣的方法( static static class static方法,並且第一個參數帶有this關鍵字)時,您將定義一個Extension Method -C#3.0中引入的功能。 基本思想是定義一個掛接到另一個類的方法,從而對其進行擴展

在這種情況下,您要擴展HtmlHelper類(因為this參數的類型),從而使.OutputBlah()HtmlHelper任何實例上都可用。 如果檢查ViewPageHtml屬性,您會注意到它實際上是HtmlHelper類型。
因此,當您在視圖中使用Html.OutputBlah()時,實際上是在訪問視圖頁面的Html屬性中包含的HtmlHelper實例,並在其上調用自己的擴展方法。

我認為您需要刷新HTML編寫器。 我幾乎可以確定是這樣。

編輯:請忽略-我未讀原始問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM