Glimpseに、POSTアクションの「returnRedirectToAction()」によってトリガーされるGETアクションの前にPOSTアクション中に何が起こったかを確認させようとしています。私は説明するこのSO投稿を見つけました:
Glimpseのリモートタブを使用して過去のリクエストを表示できます。
リモートタブをクリックし、右側の[起動]リンクを選択します。これにより、そのクライアントからのリクエストのリストが時間の経過とともに表示されます。
そのリストから、特定のリクエストの[起動]リンクをクリックして、その過去のリクエストのすべてのGlimpse情報(ロギングを含む)を表示できます。これは、URLの変更を変更することでGlimpseに示され、文字列「(Remote)」が左上隅/ステータス領域に表示されます。
私の問題は、POSTを複数回行うと、「リモート」タブから最初のPOSTにアクセスできるようにしたいだけのように見えることです。つまり、自分のWebサイトを操作しているときに、最新のPOSTで何が起こったかを確認したいのですが、glimplseは、最初のPOSTで何が起こったかを表示したいだけのようです。
この動作をテストするために、単純なMVCアプリを作成しました(MVC3とMVC4の両方で同じ手順を実行しましたが、ほぼ同じ結果になりました)。
- Visual Studio 2012で、新しいAPS.NET MVC 3 Webアプリケーションを作成し、MVC3Appという名前を付けます
- インターネットアプリケーションを選択
- ソリューションエクスプローラーでプロジェクトを右クリックし、[NuGetパッケージの管理]を選択して、Glimpse for ASP.NET MVC3(ベータ版)(バージョン0.87)をインストールします。
HomeController.csを次のように変更します
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Diagnostics;
using MVC3App.Models;
namespace MVC3App.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
ViewBag.Message = "My test";
// Initialize the model data
if (Session["value"] == null) Session["value"] = 1;
// Get a view model
var mvm = new MyViewModel() {
Value = Convert.ToInt32(Session["value"])
};
// Display the view
return View(mvm);
}
[HttpPost]
public ActionResult Index(MyViewModel mvm)
{
Trace.TraceInformation("POST: Value = {0}", mvm.Value);
// Fetch the POST data and store it in the model data
Session["value"] = mvm.Value;
// Redirect back to the "display" page
return RedirectToAction("Index");
}
public ActionResult About()
{
return View();
}
}
}
Models\MyViewModel.csを追加します
namespace MVC3App.Models
{
public class MyViewModel
{
public int Value { get; set; }
}
}
そして最後に、Index.cshtmlを変更します
@model MVC3App.Models.MyViewModel
@{
ViewBag.Title = "Home Page";
}
@using (Html.BeginForm()) {
<div>
Value: @Html.EditorFor(m => m.Value)
</div>
<input type="submit" value="Click me" />
}
プロジェクトを実行すると、「1」を含むテキストボックスを含むWebページが表示されます。値を「123」に変更し、「Clickme」ボタンをクリックします。
ここで、WebページにGlimpseパネルを表示すると、おそらくページを表示したGETリクエストからの情報が表示されていることがわかります。[リモート]タブをクリックすると、3つのリクエストと[起動]リンクが表示されます。[起動]リンクをクリックしてから、リスト内のPOSTリクエストの横にある[起動]リンクをクリックすると、値「123」を含むPOSTのデータが表示されます。
次に、Webページの値を「5」に変更し、「Clickme」ボタンをクリックします。では、POSTデータに値が5のPOSTリクエストのデータを表示したいと思います。[Glimpse]パネルの[リモート]タブで、まだ3つのリモートリクエストを使用できることがわかります。[起動]リンクをクリックすると、同じ元の3つのリモートリクエストが表示されます。ボタンをクリックしてトリガーしたPOSTリクエストは表示されません。
だから、私はここで何が欠けていますか?私はこれがうまくいくはずだと思います、そして私はそれをどういうわけか悪用しています...(私はWindows7でIEを使用していることを追加する必要があると思います)
ボブ