我正在尝试将 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>
}
这可以编译,一切都很好——顺便说一句,在我的 App_Code 文件夹中的 .cshtml 文件中。但是,当我尝试从我的一个视图中调用它时,我的视图提供的 Html 对象与助手中预期的类型不同。这是调用的样子:
<span>
@Helpers.EditLabel(Html, id, text, "comment", style, new { saveFunction = "SaveDayuLabel", clinicID = Model["ClinicID"], locationID = Model["LocationID"], date = Model["Date"] })
</span>
失败的是在@Helpers.EditLabel( 之后使用“Html”。编译器说有“无效参数”。我已经做了很多关于这个问题可能是什么的搜索/阅读,但是我读的越多,我更加困惑。任何建议都非常感谢。