在MAC上使用MonoDevelop开发ASP.NET MVC

时间:2011-05-05 00:21:05

标签: asp.net-mvc asp.net-mvc-2 mono monodevelop xsp

我正在使用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确实提供intellisense方法只存在在MVC 2.0中,来自C#和aspx文件。但是,当我尝试从MonoDevelop运行它时,我有编译错误抱怨“<%:Html.LabelFor(model => model.Name)%>”因为无法识别LabelFor方法。

MonoDevelop使用XSP作为其测试Web服务器。我不知道它是如何配置的,因为我没有自己安装它。我认为它是作为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>

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

  • 升级内部(视图)Web配置和outter(app)中所有引用的版本[您已完成此操作]。
  • Dereference System.Web.MVC 1.0.0.0&amp;参考项目的2.0.0.0
  • 确保您的bin路径中没有1.0.0.0二进制文件,公钥不会更改

答案 2 :(得分:0)

我已经为Asp.Net MVC 4制作了一个可下载的zip文件,该模板可以在Mac和Mac上的Mono / Xamarin Studio / MonoDevelop上构建和运行。 Linux http://www.cafe-encounter.net/p1319/run-asp-net-mvc4-on-mono-monodevelop-on-mac-the-c-template-project。 我应该补充说,很多问题解决方案来自Does the Razor View Engine work for Mono?