在VS 2012中使用Orchard CMS和我的View cshtml文件将不会编译



我在@Html.TextBoxFor和@Html.ValidationMessageFor上收到错误指示行,消息:

"System.Web.WebPages.Html.HtmlHelper不包含的定义"TextBoxFor"one_answers"ValidationMessageFor",并且没有扩展方法"TextBoxFor"one_answers"ValidationMessagefor"接受第一个参数未能找到类型为"System.Web.WebPages.Html.HtmlHelper"的。。。"

我已经将using语句直接添加到代码中,确认Web.config中的引用是正确的,甚至尝试创建一个扩展方法。似乎没有什么帮助。请告知。我是Razor的新手,所以一切都是一次学习经历。

@model Contact.Settings.Models.ContactSettingsPart
@using System.Web.Mvc.Html
<fieldset>
    <legend>@T("Contact Detail")</legend>
    <div class="editor-label">
        @Html.LabelFor(model => model.ContactFunctionalArea,@T("Contact Name"))
    </div>
    <div class="editor-field">
        @Html.TextBoxFor(model => model.ContactFunctionalArea)
        @Html.ValidationMessageFor(model => model.ContactFunctionalArea)
    </div>
</fieldset>

这不是关键的。它应该仍然可以正常工作。Orchard主题通常不了解正在使用的库(它们不是"真正的"项目,VS intellisense不知道如何获取这些库)。确保运行时没有问题的最简单方法是在构建之前在Orchard.Web项目中包含对models/html帮助程序项目的引用。这将确保dll位于用于部署的bin文件夹中。

我相信应该有一种方法可以告诉剃刀通过web.config"查看"dll(主题项目或模块项目中的dll),但我从未花时间让它发挥作用。如果你使用动态作为你的视图模型,就像Orchard似乎鼓励的那样(我讨厌这样),那么你无论如何都不会得到太多的智能感知

我会检查你的视图文件夹中是否有web.config文件,如果没有从Orchard的其他视图文件夹复制一个的话。

最新更新