【问题标题】:MVC3 Page - IsPostback like functionalityMVC3 页面 - 类似 IsPostback 的功能
【发布时间】:2011-11-26 00:25:11
【问题描述】:

我从 _Layout.cshtml 视图多次调用同一个控制器。所以在这个控制器中,我如何在运行时发现它是否仍然是正在呈现的同一页面,或者是否正在发出全新的页面请求?

在 asp.net 中,您可以使用 ispostback 来解决这个问题。如何判断 MVC3 中的页面是否正在发出全新的请求?

谢谢

【问题讨论】:

    标签: asp.net-mvc-3 httprequest


    【解决方案1】:

    在 MVC 上没有这样的想法。您有可以处理 POST、GET 或两者的操作。您可以使用[HttpPost][HttpGet] 属性过滤每个操作可以处理的内容。

    在 MVC 上,最接近 IsPostBack 的操作是:

    public ActionResult Index() 
    {
        if (Request.HttpMethod == "POST") 
        {
            // Do something
        }
    
        return View();
    }
    

    因此,

    [HttpPost]
    public ActionResult Create(CreateModel model) 
    {
        if (Request.HttpMethod == "POST") // <-- always true
        {
            // Do something
        }
    
        return RedirectToAction("Index");
    }    
    

    【讨论】:

    • 谢谢,你的帖子让我想到了一种新的 RESTFUL 蠕虫。在这种情况下,我的 HttpRequest 将始终是 GET。因此,使用 [HttpGet] 属性,我们仍然无法区分我们是在请求的开头还是在请求的后期。但我想像你说的那样在 MVC3 中没有这样的东西。
    【解决方案2】:

    我是否还建议您将其实现为控制器基类中的属性,例如:

    protected bool IsPostback 
    {
        get { return Request.HttpMethod == "POST"; }
    }
    

    -马克

    【讨论】:

      【解决方案3】:

      其实是这样的:

          if (Request.Method == "POST")
          {
      
          }
      

      【讨论】:

        猜你喜欢
        • 2015-09-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-06
        • 2012-12-15
        • 2012-05-20
        • 1970-01-01
        相关资源
        最近更新 更多