【问题标题】:How to detect postback in javascript?如何检测javascript中的回发?
【发布时间】:2014-04-14 12:56:55
【问题描述】:

我只需要在使用 Javascript 加载第一页时用当前日期时间填充文本。 我的意思是我正在寻找类似于 ASP.NET 中的 Page.IsPostBack 属性,但在 JS 中。

我找到了解决方案,建议我使用服务器端代码来检测回发并将变量传递给客户端。但是我用的是MVC,没有Page.IsPostBack之类的属性...

请帮我找出答案

【问题讨论】:

  • 没有?你有ViewBag(例如)和[HttpPost]。将它们放在一起:在您的方法中添加ViewBag.IsPostBack = true[HttpPost],您将在视图中获得该变量。顺便说一句,您不能像填写表单输入一样填写该文本框服务器端吗?
  • MVC 中没有回发。您不能简单地将文本填写在准备好的文档中吗? IE。当页面加载时。还是需要满足其他条件?
  • 亚当,我猜,当用户按 F5 时, 中的文本会被重新填充?这是不可接受的:(

标签: javascript asp.net-mvc postback


【解决方案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");
}    

参考:MVC3 Page - IsPostback like functionality

【讨论】:

  • 我的操作总是使用 GET 方法,所以我认为您的示例无法正常工作
  • 在你从服务器设置变量值之前,你不能在 javascript 中这样做。
【解决方案2】:

你可以这样做:

 <script>
    function myFunction() {
      // ...
    }

    @if (Request.HttpMethod == "POST")
    {
       @Html.Raw("myFunction();")
    }
</script>

【讨论】:

    【解决方案3】:
    [HttpPost]
    public ActionResult MyAction()
    {
    
       ViewBag.IsPostBack=true;
    
    }
    

    那么在你看来

    <script>
      var isPostBack=@ViewBag.IsPostBack;
    </script>
    

    【讨论】:

    • 这如何帮助我检测页面的首次加载?
    • @Andrew,第一次加载页面通常是GET 请求。这里我使用了[HttpPost],只有在你发帖时才能调用。
    【解决方案4】:

    你在这里缺少你正在使用 MVC,没有这样的“回发”概念。 在您看来,在控制器的 GET 方法中,填写日期的值。 在相应的 POST 中,您将获得此值或用户填写的其他值。所以,如果是帖子,你永远不会错过第一次填写日期的代码行。

    【讨论】:

    • 你能解释的更详细些吗?
    猜你喜欢
    • 2010-12-23
    • 2018-05-28
    • 2015-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-14
    • 1970-01-01
    相关资源
    最近更新 更多