gpt4 book ai didi

c# - 在 ASP.NET MVC 3 应用程序中使用自定义 html 帮助程序

转载 作者:太空宇宙 更新时间:2023-11-03 13:53:32 25 4
gpt4 key购买 nike

所以,几个小时以来,我一直在尝试做一些我认为——现在仍然认为——应该微不足道的事情。基本上,我创建了一个 Html 帮助程序,我需要使用它来将一些 CSS 属性应用于 ASP.NET MVC 3 应用程序的选定菜单。这是我的 Html 助手:

namespace MVCUI.Extensibility
{
public static class HtmlHelpers
{
public static MvcHtmlString MenuLink(
this HtmlHelper helper,
string text,
string action,
string controller,
string selectedCssClass,
object routeValues,
object htmlAttributes)
{
var attributes = new RouteValueDictionary(htmlAttributes);

if (!String.IsNullOrWhiteSpace(selectedCssClass))
{
var contextController = helper.ViewContext.RouteData.Values["controller"] as String ?? "Home";
var contextAction = helper.ViewContext.RouteData.Values["action"] as String ?? "Index";

if (String.Compare(
String.Format("{0}/{1}", controller, action),
String.Format("{0}/{1}", contextController, contextAction), true) == 0)
{
var cssValue = String.Empty;
if (attributes.ContainsKey("class"))
cssValue = attributes["class"] as String ?? String.Empty;
cssValue = cssValue.Trim();
if (cssValue.Length > 0)
cssValue = cssValue += (" " + selectedCssClass);
else
cssValue = selectedCssClass;
attributes["class"] = cssValue;
}
}

return helper.ActionLink(text, action, controller, new RouteValueDictionary(routeValues), attributes);
}
}
}

下面是我如何在 _Layout.cshtml 文件中使用它:

@Html.MenuLink("Posts", "Posts", "Post", "selected", new { }, new { })

由于某些非常奇怪的原因,我不断收到错误消息:

描述: 在编译服务此请求所需的资源期间发生错误。请查看以下特定错误详细信息并适当修改您的源代码。

编译器错误消息: CS1061:“System.Web.Mvc.HtmlHelper”不包含“MenuLink”的定义并且没有扩展方法“MenuLink”接受类型的第一个参数可以找到“System.Web.Mvc.HtmlHelper”(您是否缺少 using 指令或程序集引用?)

这是我尝试过的:

  1. 已添加 <add namespace="MVCUI.Extensibility" /><system.web.webPages.razor>/<pages>/<namespaces> Views 文件夹根目录下的 Web.config 文件部分。
  2. 已添加 @using MVCUI.Extensibility;_Layout.cshtml 文件的顶部。
  3. 尝试了上述 (1) 和 (2) 的所有组合。
  4. 尝试了语法:@{ Html.MenuLink("Posts", "Posts", "Post", "selected", new { }, new { }); }
  5. 用 Google 搜索了很多!所有 Material 和资源,包括我们自己的 stackoverflow,似乎都表明我在做正确的事。
  6. 甚至尝试在 AssemblyInfo.cs 中设置 [assembly: ComVisible(true)]。好吧,以防万一! ;)

免责声明:这是我第一次在 ASP.NET MVC 3 应用程序中尝试 html 助手。我哪里会出错?谢谢大家。

最佳答案

就像有人在评论中指出的那样,我的设置有些不同。在我的解决方案中,我更改了我的项目(包括 MVC 项目)的输出路径,而不是默认的 bin\。类似于 ..\Library\Build\ .到目前为止,该设置运行良好,因此那里没有犯罪。

但是,这就是让我陷入困境的原因。在我恢复默认输出路径并重建我的项目后,Html 帮助器工作了。即使在我恢复了我的首选输出路径后它仍然继续工作 - 显然是因为 bin 中的 dll文件夹已更新。

这意味着语句 @using MVCUI.Extensibility;在我的 .cshtml 文件和 <add namespace="MVCUI.Extensibility" /> Web.config 中的 引用了 bin 文件夹中未定义 HtmlHelper 的旧的过时 dll。这仍然困扰。我如何让他们在我想要的输出路径中引用 dll?

无论如何,我只是觉得我应该把经验和教训发上来,以防其他人发现自己遇到类似的麻烦。谢谢大家。

关于c# - 在 ASP.NET MVC 3 应用程序中使用自定义 html 帮助程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13036586/

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