我剛剛遇到同樣的問題,但可能更好的解決方案基於Darin Dimitrov's答案。
訣竅是基於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;
}
}
然後在~/Views/
文件夾下的Web.config
文件,改變下pages
元素,它可以在system.web.webPages.razor
部分中找到的pageBaseType
屬性:
<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>
如果這會在頁面中添加額外的`