HtmlHelper不包含BeginForm的定义。

6
尽管我的代码可以编译和运行,但我一直受到红色波浪线的困扰。例如,Html.BeginForm无法识别。尽管如果我输入“Html.”,智能感知确实会建议其他方法,如Checkbox和DropDownList。
其他下划线包括model和ViewBag。
我已经引用了MVC 5.2.3.0,并且System.Web.Mvc命名空间在我的web.config中。
这已经持续了几个月,浪费了我很多时间。我相信这与我安装的软件包版本有关,但我不理解它,无法进行故障排除。
我已经重建了我的计算机,重新安装了Visual Studio 2013,并将我的代码(分块以尝试隔离问题)复制回来,但我进展缓慢。
在我换职业之前,有人能帮我找出问题的根源吗?
3个回答

5

请确保在BeginForm方法中同时包括控制器和操作方法的名称。

@using (Html.BeginForm(ActionmethodName, ControllerName, FormMethod.Post))
{
}

2

很可能是您的配置问题。请确保您的Views文件夹中的web.config文件具有以下配置:

<system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
    <pages pageBaseType="System.Web.Mvc.WebViewPage">
      <namespaces>
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Routing" />
        <add namespace="SixAnts" />
      </namespaces>
    </pages>
  </system.web.webPages.razor> 

使用您的软件包版本和命名空间


<system.web.webPages.razor> <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> <pages pageBaseType="System.Web.Mvc.WebViewPage"> <namespaces> <add namespace="System.Web.Mvc" /> <add namespace="System.Web.Mvc.Ajax" /> <add namespace="System.Web.Mvc.Html" /> <add namespace="System.Web.Optimization"/> <add namespace="System.Web.Routing" /> - lonelyoutpost
谢谢CodeFarmer。我试图将我的web.config粘贴在上面,但效果不太好。无论如何,感谢您的信息,但我的web.config有这些命名空间。事实上,我暂时使用了一个新项目的默认配置文件,但问题仍然存在。还有其他想法吗?谢谢。 - lonelyoutpost
也许是缓存问题,尝试忽略智能感知和错误,无论如何粘贴或编写代码。然后构建并查看是否可行。我在同事几个月前创建的项目中遇到了相同的问题,我也找不到原因,所以我只是忽略它(不经常使用),现在我检查了一下,这个问题已经消失了。(PS:也许与代码编码类型或其他相关,因为它仅出现在由特定同事创建的项目中,您还可以尝试删除此项目obj文件夹下的所有文件,然后重新构建。) - Bucketcode
这对我有用。就是那一行 "System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.1.0.0。在升级了 System.Web.Mvc 后,我忘记将其更改为版本 5.2.7.0。在你的情况下,你应该将其更改为 5.2.3.0。我猜你几年前就解决了这个问题! - AJ Dhaliwal

0

包含表单相关扩展的类FormExtensions位于System.Web.Mvc.Html命名空间中(请参见MSDN),而不是System.Web.Mvc。尝试在Views文件夹内的Web.config中添加System.Web.Mvc.Html,应该可以正常工作。


谢谢你,kiziu。这很有用。不幸的是,我不认为这是一个web.config问题(请参见我的上面的评论)。你还有其他想法吗?谢谢。 - lonelyoutpost
Demonplus... 你解决了吗?我也有同样的问题。谢谢! - Diego

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接