C# ViewBag和HtmlHelper错误:";找不到编译动态表达式所需的一个或多个类型。是否缺少程序集引用?“;
ViewBag错误:“找不到编译动态表达式所需的一个或多个类型。是否缺少程序集引用?” 所有HTML帮助程序方法都包含错误:“无法从用法推断方法的类型参数。请尝试显式指定类型参数。” 在花了过去两天的时间翻阅了与此错误相关的其他帖子后,以下是我尝试的内容:C# ViewBag和HtmlHelper错误:";找不到编译动态表达式所需的一个或多个类型。是否缺少程序集引用?“;,c#,asp.net-mvc,visual-studio-2013,razorengine,C#,Asp.net Mvc,Visual Studio 2013,Razorengine,ViewBag错误:“找不到编译动态表达式所需的一个或多个类型。是否缺少程序集引用?” 所有HTML帮助程序方法都包含错误:“无法从用法推断方法的类型参数。请尝试显式指定类型参数。” 在花了过去两天的时间翻阅了与此错误相关的其他帖子后,以下是我尝试的内容: 修复Visual Studio 重新安装Visual Studio 确保引用了Microsoft.CSharp和System.Core 添加到global.asax:ViewEngines.Engines.Clear();添加(新的Cust
- 修复Visual Studio
- 重新安装Visual Studio
- 确保引用了Microsoft.CSharp和System.Core
- 添加到global.asax:ViewEngines.Engines.Clear();添加(新的CustomRazorViewEngine())李>
- 将Microsoft.CSharp Copy Local的参考值从false更改为True
- 今天我安装了更新RC 3
- 检查GAC的版本(仅包含版本4.0.0.0)
- 卸载/重新安装最新版本的.NET framework
<?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=5.2.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Optimization"/>
<add namespace="System.Web.Routing" />
<add namespace="WebApplication14" />
</namespaces>
</pages>
</system.web.webPages.razor>
<appSettings>
<add key="webpages:Enabled" value="false" />
</appSettings>
<system.webServer>
<handlers>
<remove name="BlockViewHandler"/>
<add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
</handlers>
</system.webServer>
</configuration>
@model WebApplication14.Models.ResetPasswordViewModel
@{
ViewBag.Title = "Reset password";
}
<h2>@ViewBag.Title.</h2>
@using (Html.BeginForm("ResetPassword", "Account", FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
{
@Html.AntiForgeryToken()
<h4>Reset your password.</h4>
<hr />
@Html.ValidationSummary("", new { @class = "text-danger" })
@Html.HiddenFor(model => model.Code)
<div class="form-group">
@Html.LabelFor(m => m.Email, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.TextBoxFor(m => m.Email, new { @class = "form-control" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(m => m.Password, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.PasswordFor(m => m.Password, new { @class = "form-control" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(m => m.ConfirmPassword, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.PasswordFor(m => m.ConfirmPassword, new { @class = "form-control" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" class="btn btn-default" value="Reset" />
</div>
</div>
}
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
在这一点上真是不知所措。这是在打开一个全新的MVC项目以及旧项目时发生的。我想在新的安装和更新之后,错误会消失,但我错了。任何帮助都将不胜感激
示例代码:
<?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=5.2.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Optimization"/>
<add namespace="System.Web.Routing" />
<add namespace="WebApplication14" />
</namespaces>
</pages>
</system.web.webPages.razor>
<appSettings>
<add key="webpages:Enabled" value="false" />
</appSettings>
<system.webServer>
<handlers>
<remove name="BlockViewHandler"/>
<add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
</handlers>
</system.webServer>
</configuration>
@model WebApplication14.Models.ResetPasswordViewModel
@{
ViewBag.Title = "Reset password";
}
<h2>@ViewBag.Title.</h2>
@using (Html.BeginForm("ResetPassword", "Account", FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
{
@Html.AntiForgeryToken()
<h4>Reset your password.</h4>
<hr />
@Html.ValidationSummary("", new { @class = "text-danger" })
@Html.HiddenFor(model => model.Code)
<div class="form-group">
@Html.LabelFor(m => m.Email, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.TextBoxFor(m => m.Email, new { @class = "form-control" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(m => m.Password, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.PasswordFor(m => m.Password, new { @class = "form-control" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(m => m.ConfirmPassword, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.PasswordFor(m => m.ConfirmPassword, new { @class = "form-control" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" class="btn btn-default" value="Reset" />
</div>
</div>
}
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
@model WebApplication14.Models.ResetPasswordViewModel
@{
ViewBag.Title=“重置密码”;
}
@ViewBag.Title。
@使用(Html.BeginForm(“ResetPassword”,“Account”,FormMethod.Post,new{@class=“form horizontal”,role=“form”}))
{
@Html.AntiForgeryToken()
重置密码。
@Html.ValidationSummary(“,new{@class=“text danger”})
@Html.HiddenFor(model=>model.Code)
@LabelFor(m=>m.Email,新的{@class=“col-md-2控制标签”})
@TextBoxFor(m=>m.Email,新的{@class=“form control”})
@LabelFor(m=>m.Password,新的{@class=“col-md-2控制标签”})
@Html.PasswordFor(m=>m.Password,新的{@class=“form control”})
@LabelFor(m=>m.ConfirmPassword,新的{@class=“col-md-2控制标签”})
@Html.PasswordFor(m=>m.ConfirmPassword,new{@class=“form control”})
}
@节脚本{
@Scripts.Render(“~/bundles/jqueryval”)
}
我也有这个问题。在我执行以下步骤后,此问题已得到修复:
- 已安装Visual Studio update 3
- 删除所有临时文件(从\Windows\Microsoft.NET\Framework64\v4.0.30319\temporary ASP.NET文件\Windows\Microsoft.NET\Framework\v4.0.30319\temporary ASP.NET文件\AppData\Local\Temp\temporary ASP.NET文件\root)
- 从项目文件夹和csproj.user中删除{ProjectName}.v12.suo
- 创建一个新的asp.net mvc应用程序,并将Views web.config复制到旧的应用程序中。这里是旧的(左)和新的(右)之间的区别:
编辑:忽略比较文件中的第20行。在VM崩溃后,我遇到了类似的问题。解决我的问题的关键一步是Boies Ioan回答中的第二个要点——具体来说,最后一个文件夹提到:
“删除所有临时文件(从\Windows\Microsoft.NET\Framework64\v4.0.30319\temporary ASP.NET files\Windows\Microsoft.NET\Framework\v4.0.30319\temporary ASP.NET files、\AppData\Local\Temp\temporary ASP.NET files\root)”尝试重建解决方案(按F6)。这为我解决了这个问题。你能不能也包括引发错误的代码?它基本上发生在所有包含ViewBag和HTML帮助程序的代码中。下面是来自默认MVC模板的ResetPassword视图的一个示例:我也有同样的问题。它是在我升级到MVC5.2之后开始的,所以我认为他们在那个版本中出了问题。我仍在寻找解决方案,但如果发现任何问题,我会尝试更新您。对我来说,这是要点3:从解决方案文件夹中删除{SolutionName}.v12.suo,从项目文件夹中删除{ProjectName}.csproj.user。