如何检查哪个事件导致回发在asp.net mvc应用程序中

时间:2009-11-03 09:00:54

标签: asp.net asp.net-mvc post back

我的ASP.net MVC应用程序中有一个View和一个Controller。

我有一个“提交”按钮&在我的视图中有一个“取消”按钮。

当我点击下面任何一个按钮时,将触发动作。

AcceptVerbs(HttpVerbs.Post)

public ActionResult Result()

{

}

现在问题是我将如何知道我的公共ActionResult Result(),是否由于“提交”或“取消”而导致回复?

4 个答案:

答案 0 :(得分:0)

您可以通过以下步骤解决问题:

我。在视图的表单中放置一个名为“取消”的隐藏字段。为其指定默认值 false

II。在取消按钮的onclick事件中,添加以下脚本:

document.getElementById('cancel').value = true; document.getElementById('myForm').submit();

将'myForm'更改为您表单的名称。

III。将Result()的方法签名更改为以下内容:

public ActionResult Result(bool cancel)

通过模型绑定,隐藏字段“取消”的值可以在操作方法的签名中访问。

答案 1 :(得分:0)

你可以尝试

function OnBeginRequest(sender, args) {
        var postBackElement = args.get_postBackElement();
if ((postBackElement.id == '<%= btnSave.ClientID %>')
  {

  }
}

答案 2 :(得分:0)

感谢您的回答。 我得到的另一个解决方案是,

public ActionResult Result()
    {
        if (Request.Params.ToString().IndexOf("btnSubmit") > 0)
            //
        else
            //
    }

答案 3 :(得分:0)

我建议你的“取消”按钮不应该提交表格。有几种方法可以解决这个问题,但最简单的方法是在按钮上输入一个javascript onclick事件,导航回上一页。 (history.go(-1))如果这不符合您的需求,您还可以指定要导航到的特定路线。最复杂的是拦截客户端的点击并确定要点击的路线,但是我通常只会在表单上有多个提交按钮以达到不同的操作时执行此操作,这是一种非常罕见的情况。 / p>