1

我正在 MonoDevelop 中使用 ASP.NET MVC 2.0 开发一个 Web 应用程序。我有最新的 Mono 2.10 和 MonoDevelop 2.4.2,我在 Mac 上运行它们。

根据 mono 的发行说明,它应该支持 ASP.NET MVC 2.0。但是,我发现 MonoDevelop 的项目模板仍然只支持 ASP.NET MVC 1.0。所以我必须从 MonoDevelop 创建 MVC 项目并从参考中删除 system.web.mvc 1.0.0.0 并重新添加 system.web.mvc 2.0.0.0。我可以编写和编译代码 OK,MonoDevelop 确实为仅存在的方法提供智能感知在 MVC 2.0 中来自 C# 和 aspx 文件。但是,当我尝试从 MonoDevelop 运行它时,我遇到了编译错误,抱怨“<%: Html.LabelFor(model => model.Name) %>” as LabelFor method can not be Recognized 。

MonoDevelop 使用 XSP 作为其测试网络服务器。我不确定它是如何配置的,因为我自己没有安装它。我认为它是作为 MonoDevelop 的一部分安装的。我的猜测是 XSP 在某种程度上仍然使用 MVC 1.0,但我无法证明它,因为我什至找不到它的安装位置。

有人可以帮我吗?

更新:我也一直在怀疑 web.config。以下是它们现在的样子:web.config

<configuration>
  <system.web>
    <compilation defaultLanguage="C#" debug="true">
      <assemblies>
        <add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
        <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
        <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
  </assemblies>
</compilation>
<customErrors mode="RemoteOnly">
</customErrors>
<pages>
  <namespaces>
    <add namespace="System.Web.Mvc" />
    <add namespace="System.Web.Mvc.Ajax" />
    <add namespace="System.Web.Mvc.Html" />
    <add namespace="System.Web.Routing" />
  </namespaces>
</pages>
<authorization>
  <allow users="*" />
</authorization>

视图下的 web.config

<configuration>
<system.web>
    <httpHandlers>
        <add path="*" verb="*" type="System.Web.HttpNotFoundHandler" />
    </httpHandlers>
    <pages validateRequest="false" pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" 
            pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" 
            userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
        <controls>
            <add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" 
            namespace="System.Web.Mvc" tagPrefix="mvc" />
        </controls>
    </pages>
</system.web>
<system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <handlers>
        <remove name="BlockViewHandler" />
        <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
    </handlers>
</system.webServer>

4

3 回答 3

1

为 ASP.NET MVC 设置 ASP.NET 项目需要在 web.config 中更改和添加大量设置。MD 中的项目模板适用于 ASP.NET MVC 1.0,而不是 ASP.NET MVC 2,因此您可能缺少一些必要的设置,可能是命名空间导入。

于 2011-05-05T01:03:39.943 回答
0

我在 MacOS X 上运行了我当前的两个项目。我只需要确保完成三个步骤,它们如下:

  • 升级内部(视图)网络配置和外部(应用程序)中所有引用的版本[你已经完成了]。
  • 为项目取消引用 System.Web.MVC 1.0.0.0 & Reference 2.0.0.0
  • 确保您的 bin 路径中没有 1.0.0.0 二进制文件,公钥不会更改
于 2011-06-02T18:33:32.163 回答
0

我已经为 Asp.Net MVC 4 完成了一个项目模板的可下载 zip 文件,它在 Mac 和 Linux 上的 Mono/Xamarin Studio/MonoDevelop 上构建和运行/在http://www.cafe-encounter.net/p1319/运行-asp-net-mvc4-on-mono-monodevelop-on-mac-the-c-template-project。我应该补充一点,很多问题的解决都来自于 Razor View Engine 是否适用于 Mono?

于 2013-07-22T19:19:20.347 回答