我們(我和我的團隊)有一個ASP.NET MVC應用程序,我們正在集成一個或兩個Web窗體。我們試圖在WebForms部分的應用程序的MVC部分中重用Master Page。我們發現在渲染網頁表單的MVC局部視圖,它的偉大工程,直到我們嘗試做回發,這是使用一個WebForm的原因的一種方式。ASP.NET MVC,Webform混合
的錯誤:
Validation of viewstate MAC failed. If this application is hosted by a Web Farm or cluster, ensure that configuration specifies the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster.
代碼從一個WebForm (credited to "How to include a partial view inside a webform")呈現局部視圖:
public static class WebFormMVCUtil
{
public static void RenderPartial(string partialName, object model)
{
//get a wrapper for the legacy WebForm context
var httpCtx = new HttpContextWrapper(System.Web.HttpContext.Current);
//create a mock route that points to the empty controller
var rt = new RouteData();
rt.Values.Add("controller", "WebFormController");
//create a controller context for the route and http context
var ctx = new ControllerContext(
new RequestContext(httpCtx, rt), new WebFormController());
//find the partial view using the viewengine
var view = ViewEngines.Engines.FindPartialView(ctx, partialName).View;
//create a view context and assign the model
var vctx = new ViewContext(ctx, view,
new ViewDataDictionary { Model = model },
new TempDataDictionary());
//ERROR OCCURS ON THIS LINE
view.Render(vctx, System.Web.HttpContext.Current.Response.Output);
}
}
我這個錯誤唯一的經驗是在Web場,這是不是上下文案子。另外,我知道機器密鑰用於解密ViewState。
有關如何診斷此問題的任何信息,將不勝感激。
一個變通辦法: 到目前爲止的解決辦法是在頭內容移動到PartialView,然後使用AJAX調用來調用頁面只偏查看從Web窗體,然後使用直接在MVC視圖上進行部分視圖。此外,我們仍然可以分享Master Page的非技術特定部分,即任何非MVC特定的部分。但是,這還不是一個理想的解決方案,仍然需要服務器端解決方案。
而且,與具有更復雜的控制的控制工作時,使用JavaScript,13759第三方控件尤其動態生成的腳本這個solutino有問題。
我正在尋找解決方案,它似乎你也在SO問題ID#702746中使用相同的技術。任何人?? – 2009-08-14 15:07:49
@Kurt編輯製作給予信貸 – 2009-08-14 15:12:00
重複:http://stackoverflow.com/questions/230014 – 2009-08-15 13:33:15