MVC Razor助手在当前上下文中不存在

时间:2012-09-26 11:56:15

标签: asp.net-mvc razor visual-studio-2012

我在我的MVC4 Web应用程序中创建了一个自定义剃刀助手,我需要在所有视图中使用它。

在我的所有视图页面中,我似乎无法使用自定义助手。 VS2012不只是看到它。

我该如何解决这个问题?

编辑:它实际上在我运行页面时有效,它只是VS看不到它。

这是我的助手,位于我的AppCode文件夹中的Helpers.cshtml中。

@helper TextBox(string title, string id, string placeholder, bool required){    
<ul>
    <li>
        <label for="@id">@title</label>
    </li>
    <li>
        <input type="text" name="this" class="@if (@required) {<text>required</text>}" minlength="2" id="@id" placeholder="@placeholder" />
    </li>
</ul>
}

4 个答案:

答案 0 :(得分:8)

重新启动Visual Studio

仅靠清洁和重建是不够的,但对我有用的步骤是:

  1. 清洁解决方案
  2. 重新启动Visual Studio(2012)
  3. 重建解决方案
  4. 完成这些步骤后,Visual Studio Intellisense再次启动它。

答案 1 :(得分:6)

尝试构建/重建项目(如果您的助手位于App_Code文件夹中)。

然后VS将识别帮助者。

答案 2 :(得分:5)

如果是razor helper(using @helper syntax),则应将其定位在\ App_Code

中的视图中
  

我们可以通过保存我们的@helper方法来实现这一目标   位于\ App_Code目录中的.cshtml / .vbhtml文件   您在项目的根目录创建的。例如,在我之下   在\ App_Code文件夹中创建了一个“ScottGu.cshtml”文件   在文件中定义了两个独立的辅助方法(你可以拥有任何方法)   每个文件中的辅助方法数量):

如果它是更传统的html帮助器,则应通过向namespaces中定义的<system.web.webPages.razor> ~\Views\Web.Config元素添加记录来引用它。如果您只想在单视图中使用它,可以在视图上添加@using指令。

答案 3 :(得分:1)

在任何视图中,您都可以像这样调用自定义Razor助手:

@Helpers.TextBox("some title", "someid", "default value", false)

这假设您的助手是在~/App_Code/Helpers.cshtml内定义的。