gpt4 book ai didi

asp.net-mvc-4 - 试图将 HtmlHelper 传递给助手的噩梦

转载 作者:行者123 更新时间:2023-12-02 16:19:23 25 4
gpt4 key购买 nike

我正在尝试将 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 文件中。但是,当我尝试从我的 View 之一调用它时,我的 View 提供的 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”。编译器说存在“无效参数”。我已经做了很多搜索/阅读关于这个问题可能是什么,但我越多阅读时,我越困惑。非常感谢任何建议。

最佳答案

Razor 帮助程序 block 被编译为页面上的实例方法。(有关更多详细信息,请参阅my blog)

你根本不需要那个参数;辅助方法可以访问相同的 Html property (继承自 WebViewPage 基类)页面的其余部分可以。

<小时/>

您面临的直接问题是您将帮助程序声明为采用 ASP.Net WebPages HtmlHelper 类(在 System.Web.WebPages.Html 命名空间中),而不是MVC 版本(在 System.Web.Mvc 中)。

关于asp.net-mvc-4 - 试图将 HtmlHelper 传递给助手的噩梦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17356711/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com