为什么不是所有的HtmlHelper都在工作?

时间:2016-04-20 08:25:06

标签: c# asp.net-mvc visual-studio razor html-helper

我正在研究MVC项目上的Visual Studio。我正在尝试使用HtmlHelper。 有些工作正常,但其他只是没有在智能感知工具中显示,如果我输入它们就无法正常工作。对于exmeple BeginForm或DropDownListFor。 (但是下拉列表存在......)

编辑1 它不能在我的计算机上工作,但在我的同事,在同一个项目/同一个分支上工作,它工作正常。

对不起的屏幕截图感到抱歉。

谢谢,

斯特凡。

添加webconfig,因为在评论中提到:

<configuration>
  <configSections>
    <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=314E35">
      <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=3664E35" requirePermission="false" />
      <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF5" requirePermission="false" />
    </sectionGroup>
  </configSections>

  <system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31E35" />
    <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" />
      </namespaces>
    </pages>
  </system.web.webPages.razor>

EDIT2:

更奇怪的是:它在一个项目(我新创建的)中运行良好,但不在解决方案上(我与他人共享)。 ScreenShots of the problem

3 个答案:

答案 0 :(得分:0)

来自 Documents

  

在using块中使用此方法。在这种情况下,该方法会在使用块的末尾呈现结束标记。

必须是@using(Html.BeginForm()){}

您需要将其包含在using块内,以便在使用块关闭时正确生成结束</form>

由于您尝试使用错误的语法,因此智能感知不会显示出来。

编辑1:因为您说大部分语法不起作用..试试这个

在视图中替换您的现有<host />标记 - &gt;带有以下行的Web.config

<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

答案 1 :(得分:0)

在某些情况下,您需要使用using语句(与Html.BeginForm()一样,因为我看到的是您正在尝试的内容。)

例如:

@using(Html.BeginForm())
{
   //Form here
}

同样适用于Ajax.BeginForm()。此外,您将看到在某些情况下(如Html.RenderPartial),您必须将其包含在剃刀代码块中,如下所示:@{Html.RenderPartial();}

以下是有关该主题的更多信息:

https://msdn.microsoft.com/en-us/library/system.web.mvc.htmlhelper(v=vs.118).aspx

https://msdn.microsoft.com/en-us/library/system.web.mvc.htmlhelper_methods(v=vs.118).aspx

答案 2 :(得分:0)

在webconfig中似乎很好。请按以下步骤操作。

1.运行解决方案。

2.使用问题卸载项目

3.删除Visual Studio在项目旁边生成的.user文件。

4.使用问题重新编写项目

5.建立解决方案