我刚刚遇到了同样的问题,但可能是基于Darin Dimitrov 的回答的更好的解决方案。
诀窍是创建一个页面基类型,基于WebViewPage<T>
类,视图的默认基类并在FormContext
那里进行交换。
abstract public class FormFixWebViewPage : FormFixWebViewPage<object>
{
}
abstract public class FormFixWebViewPage<T> : WebViewPage<T>
{
override public void Write(System.Web.WebPages.HelperResult result)
{
var originalFormContext = ViewContext.FormContext;
ViewContext.FormContext = new FormContext();
base.Write(result);
ViewContext.FormContext = originalFormContext;
}
}
然后在Web.config
文件夹下的~/Views/
文件中,修改elementpageBaseType
下的属性pages
,可以在以下system.web.webPages.razor
部分找到:
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="<YOUR-NAMESPACE>.FormFixWebViewPage">
<!--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.Helpers" />
<add namespace="System.Web.Routing" />
</namespaces>
</pages>
</system.web.webPages.razor>