Asp.net mvc 3 如果我想使用属性来处理MVC返回的contentType,那么在OnResultExecuting或OnResultExecuted中执行会更好吗?
为了解决一个荒谬的问题,我需要在我的querystring中添加一个值,这是用javascript实现的,并测试它是否存在于服务器上,因为这可能来自ajax或iframe,所以很遗憾,没有可能的头,我正试图避免向我的元素添加值。为此,我设计了一个小片段,但我不确定将setter块放在哪里:Asp.net mvc 3 如果我想使用属性来处理MVC返回的contentType,那么在OnResultExecuting或OnResultExecuted中执行会更好吗?,asp.net-mvc-3,actionfilterattribute,Asp.net Mvc 3,Actionfilterattribute,为了解决一个荒谬的问题,我需要在我的querystring中添加一个值,这是用javascript实现的,并测试它是否存在于服务器上,因为这可能来自ajax或iframe,所以很遗憾,没有可能的头,我正试图避免向我的元素添加值。为此,我设计了一个小片段,但我不确定将setter块放在哪里: using System.Web.Mvc; namespace Company.Client.Framework.Mvc { class CreateFormDialogResponseAttribut
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看起来像我不在乎你想做什么。这是准确的理解吗?自我回答:
因为我需要重写ActionResult本身设置的值,所以我必须在方法完成工作后进入。因为我想避免开发人员手动设置类型的情况,所以我做了两个检查,一个检查我们是否应该设置它,另一个检查它是否是默认的application/json