不条理な問題を解決するために、クエリ文字列に値を追加し (javascript でそれを行いました)、それがサーバー上に存在するかどうかをテストする必要があります (これは ajax または iframe に由来する可能性があるため、残念ながらヘッダーの可能性はありません) 、そして私は自分の<form>
要素に値を追加することを避けようとしています)。そのために、私はこの小さなスニペットを考案しましたが、「セッター」ブロックをどこに置くべきかわかりません:
using System.Web.Mvc;
namespace Company.Client.Framework.Mvc
{
class CreateFormDialogResponseAttribute : ActionFilterAttribute
{
private bool SetContentType { get; set; }
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
SetContentType = !filterContext.HttpContext.Request.Params["FormDialogRequest"].IsEmpty();
base.OnActionExecuting(filterContext);
}
public override void OnResultExecuting(ResultExecutingContext filterContext)
{
//do I set it here? (A)
if (SetContentType)
filterContext.HttpContext.Response.ContentType = "text/json";
base.OnResultExecuting(filterContext);
}
public override void OnResultExecuted(ResultExecutedContext filterContext)
{
//do I set it here? (B)
if (SetContentType)
filterContext.HttpContext.Response.ContentType = "text/json";
base.OnResultExecuted(filterContext);
}
}
}
私がそれを設定した場合(A)
、クライアントは必要に応じて属性を「オーバーライド」する時間があるようです。それに対して、 「あなたがどうしたいと思っているかはどうでもいい」という立場(B)
のように見えます。それは正しい理解ですか?