Asp.net mvc 4 尝试将HtmlHelper传递给帮助者的噩梦

Asp.net mvc 4 尝试将HtmlHelper传递给帮助者的噩梦,asp.net-mvc-4,html-helper,Asp.net Mvc 4,Html Helper,我试图将一个HtmlHelper对象传递给我自己的助手方法,这样我就可以在我自己的助手中调用Html.TextBox。之所以要这样做,是因为TextBox方法接受htmlAttributes对象,这是一种非常简单的动态添加属性的方法。这在我的特殊情况下很重要。(我正在尝试创建一个可以单击并编辑其中文本的链接。其中涉及一个javascript回调函数,此回调的参数将根据保存的内容而有所不同——因此需要htmlAttributes对象。)问题是,我似乎无法将Html对象传递给帮助器。以下是我的助手的

我试图将一个HtmlHelper对象传递给我自己的助手方法,这样我就可以在我自己的助手中调用Html.TextBox。之所以要这样做,是因为TextBox方法接受htmlAttributes对象,这是一种非常简单的动态添加属性的方法。这在我的特殊情况下很重要。(我正在尝试创建一个可以单击并编辑其中文本的链接。其中涉及一个javascript回调函数,此回调的参数将根据保存的内容而有所不同——因此需要htmlAttributes对象。)问题是,我似乎无法将Html对象传递给帮助器。以下是我的助手的代码:

@helper EditLabel(System.Web.WebPages.Html.HtmlHelper html, string id, string text, string defaultText, string linkStyle, object saveFunctionAndArgs)
{    
    string linkText = (string.IsNullOrEmpty(text)) ? defaultText : text;
    <div id="Link_@id">
        <a href="javascript:EditLabel('Link_@id', 'Edit_@id');" style="@linkStyle">@linkText</a>
    </div>    
    <div style="display:none" id="Edit_@id" data-link-id="Link_@id">        
        @html.TextBox("EditLabel", text, saveFunctionAndArgs)        
    </div>
}
@helper EditLabel(System.Web.WebPages.Html.HtmlHelper Html、字符串id、字符串文本、字符串默认文本、字符串链接样式、对象saveFunctionAndArgs)
{    
字符串linkText=(string.IsNullOrEmpty(text))?默认文本:文本;
@TextBox(“EditLabel”、文本、saveFunctionAndArgs)
}
这可以编译,一切都很好——顺便说一句,在.cshtml文件的“我的应用程序代码”文件夹中。但是,当我尝试从我的一个视图调用它时,我的视图提供的Html对象与助手中预期的类型不同。以下是通话内容:

<span>
    @Helpers.EditLabel(Html, id, text, "comment", style, new { saveFunction = "SaveDayuLabel", clinicID = Model["ClinicID"], locationID = Model["LocationID"], date = Model["Date"] })
</span>

@EditLabel(Html,id,文本,“注释”,样式,新的{saveFunction=“SaveDayuLabel”,clinicID=Model[“clinicID”],locationID=Model[“locationID”],date=Model[“date”]})

失败的是在@Helpers.EditLabel()之后使用“Html”。编译器说有“无效参数”。我已经做了很多关于这个问题的搜索/阅读,但是读得越多,我就越困惑。任何建议都非常感谢。

Razor helper块被编译为页面上的实例方法。 (有关详细信息,请参见)

您根本不需要该参数;helper方法可以访问与页面其余部分相同的(继承自
WebViewPage
基类)



您当前的问题是,您声明帮助程序使用ASP.Net网页
HtmlHelper
类(在
System.Web.WebPages.Html
命名空间中),而不是MVC版本(在
System.Web.MVC
中)。

谢谢您的响应,但是当我尝试使用“本机”Html对象时对于helper,它总是空的。似乎您必须将某种“Html”对象传递给helper方法。