私たち(私と私のチーム)はASP.NET MVCアプリケーションを持っており、Webフォームである1ページまたは2ページを統合しています。我々はWebFormsの部分で、アプリケーションのMVC部分からマスターページを再利用しようとしています。 までウェブフォームでMVCパーシャルビューをレンダリングする方法を見つけました。ポストバックを試行します。これがWebフォームを使用する理由です。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.
コードWebフォーム(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の復号化に使用されることを理解しています。
この問題を診断する方法についての情報は高く評価されます。
回避策:これまでのところ 回避策は、その後、Webフォームからわずかの部分図でページを呼び出すために、AJAX呼び出しを使用し、PartialViewにヘッダーの内容を移動することで、次に使用しますPartialViewをMVCビューで直接表示します。また、マスターページの技術以外の部分、つまりMVC固有のもの以外のものを共有することもできます。それでもなお、これは理想的な解決策ではありません。サーバー側のソリューションが依然として求められています。
また、このソルティノは、JavaScriptを使用してより洗練されたコントロールを備えたコントロール、特にサードパーティのコントロールで使用されるような動的に生成されたスクリプトで作業するときに問題があります。
私はこれも解決策を探しています。それはあなたが同じ質問をID#702746で使用しているようです。誰でも?? –
@Kurt Editクレジットを与えるには –
重複:http://stackoverflow.com/questions/230014 –