[英]ASPNET MVC 5 Html helper Action method view results input id missing (sometimes..) Possible Bug?
[英]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
任何實例上都可用。 如果檢查ViewPage
的Html
屬性,您會注意到它實際上是HtmlHelper
類型。
因此,當您在視圖中使用Html.OutputBlah()
時,實際上是在訪問視圖頁面的Html
屬性中包含的HtmlHelper
實例,並在其上調用自己的擴展方法。
我認為您需要刷新HTML編寫器。 我幾乎可以確定是這樣。
編輯:請忽略-我未讀原始問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.