该项目是使用Xamarin for Visual Studio 2013创建的。首先,.cshtml文件无法识别@model指令。似乎没有正确配置剃刀引擎。然后我在我的项目的views文件夹中配置web.config,以便程序集的版本与我安装的程序集的确切版本匹配。
<?xml version="1.0"?>
<configuration>
<configSections>
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>
</configSections>
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="Ototim.Mobile.Droid" />
</namespaces>
</pages>
</system.web.webPages.razor>
</configuration>
它确实有效,可以识别@model指令。但是,当我在.cshtml文件中调用Model Property时,会出现错误
当前上下文中不存在名称“模型”
在包含模型的每个.cshtml文件上,即使我使用@model指令声明了模型的类型,并且生成的代码后面确实包含Model属性。
@using Ototim.Mobile.Droid.Models
@model BoyKms
并生成代码。
[System.CodeDom.Compiler.GeneratedCodeAttribute("RazorTemplatePreprocessor", "3.11.0.0")]
public partial class RazorView : RazorViewBase
{
#line hidden
#line 2 "RazorView.cshtml"
public BoyKms Model { get; set; }
#line default
#line hidden
//and so on...
部署项目仍然有效,并且在运行时没有显示错误,但是当项目变得更加复杂时,我认为如果Intellisense可以识别模型,代码将更容易。