gpt4 book ai didi

c# - 无法让我的 MVC 扩展 HtmlHelper 类正常工作(错误 : Try specifying the type arguments explicitly)

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

我对 MVC 很陌生,但从 1.1 开始就使用 .NET。我有一个非常令人困惑的问题,我不明白我做错了什么。它与创建我自己的 HtmlHelper 类有关。

  • 我正在运行 MVC 5.1
  • Razor
  • 我已通过创建测试项目检查 web.config 是否正确
  • 我在一个全新的项目中重现了这个问题,以确保我一直在处理的项目没有任何问题

我正在使用以下指南:http://patrickdesjardins.com/blog/inline-razor-helper-instead-of-html-helper-for-you-asp-net-mvc-website

我基本上是逐行完成的。

这是我的测试项目。这是我在 App_Code 文件夹中的助手类。

namespace Test2.MyHtmlHelper
{
public static class HtmlExtensions
{
public static MvcHtmlString TestEditorFor(this HtmlHelper htmlHelper, string expression)
{
return new MvcHtmlString("test");
}

public static MvcHtmlString TestHelperFor<TModel, TProperty>(this HtmlHelper htmlHelper, Expression<Func<TModel, TProperty>> expression)
{
return new MvcHtmlString("test2");
}
}
}

这是我的 cshtml:

@model Test2.Area
@using Test2.MyHtmlHelper

@using (Html.BeginForm())
{
<div class="form-horizontal">
<div class="form-group">

@Html.EditorFor(model => model.name, new { htmlAttributes = new { @class = "form-control" } })

@Html.TestEditorFor("test") @*--works*@
@Html.TestEditorFor(model => model.Name) @*--error*@
@Html.TestHelperFor(b => b.name) @*--error*@

</div>
</div>
}

所以有两个问题。第一个是以下代码行:

@Html.TestHelperFor(b => b.name)

The type arguments for method 'Test2.MyHtmlHelper.HtmlExtensions.YourGenericHelperFor<TModel,TProperty>(System.Web.Mvc.HtmlHelper, System.Linq.Expressions.Expression<System.Func<TModel,TProperty>>)' cannot be inferred from the usage. Try specifying the type arguments explicitly.

我认为反射应该会自动发现这一点,所以你不必明确地输入参数。它甚至在指南中这样说:“如您所见,Html Helper 不知道模型类是如何构成的。它只知道它通过参数接受一个表达式,我们将通过反射获得属性及其值”

第二个问题是,一旦我使用 lambda 表达式通过我的辅助方法引用模型,就没有引用。使用@Html.TestEditorFor(model => model.Name),当我检查模型上的智能感知时,它会显示“(参数)?模型”。但是对于@Html.EditorFor,它说的是“Area model”,这是正确的。估计和我的方法不知道接受什么有关,不过再说一遍,不应该自动处理吗?

感觉自己像个菜鸟,但已经花了一个下午试图解决这个问题,我现在打算放弃,只是解决它。

最佳答案

这对我有用

public static class HtmlExtensions
{
public static MvcHtmlString TestEditorFor(this HtmlHelper htmlHelper, string expression)
{
return new MvcHtmlString("test");
}

public static MvcHtmlString TestHelperFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper,
Expression<Func<TModel, TProperty>> expression)
{
return new MvcHtmlString("test2");
}
}



@Html.EditorFor(model => model.name, new { htmlAttributes = new { @class = "form-control" } })
@Html.TestEditorFor("test")
@Html.TestHelperFor(model => model.name)
@Html.TestHelperFor(b => b.name)

关于c# - 无法让我的 MVC 扩展 HtmlHelper 类正常工作(错误 : Try specifying the type arguments explicitly),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28681262/

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