我的 ASP.net MVC 应用程序中有一个视图和一个控制器。
我的视图中有一个“提交”按钮和一个“取消”按钮。
当我单击下面的任何按钮时,将触发操作。
AcceptVerbs(HttpVerbs.Post)
公共 ActionResult 结果()
{
}
现在的问题是我将如何在我的公共 ActionResult Result() 中知道是否由于“提交”或“取消”而导致回发?
我的 ASP.net MVC 应用程序中有一个视图和一个控制器。
我的视图中有一个“提交”按钮和一个“取消”按钮。
当我单击下面的任何按钮时,将触发操作。
AcceptVerbs(HttpVerbs.Post)
公共 ActionResult 结果()
{
}
现在的问题是我将如何在我的公共 ActionResult Result() 中知道是否由于“提交”或“取消”而导致回发?
您可以通过以下步骤解决问题:
一世。在视图的表单中放置一个名为“取消”的隐藏字段。给它一个默认值false。
ii. 在取消按钮的 onclick 事件中,添加以下脚本:
document.getElementById('cancel').value = true; document.getElementById('myForm').submit();
将“myForm”更改为表单的名称。
iii. 将 Result() 的方法签名更改为以下内容:
public ActionResult Result(bool cancel)
通过模型绑定,您的隐藏字段“取消”的值将可以在您的操作方法的签名中访问。
你可以试试
function OnBeginRequest(sender, args) {
var postBackElement = args.get_postBackElement();
if ((postBackElement.id == '<%= btnSave.ClientID %>')
{
}
}
感谢您的回答。我得到的另一个解决方案是,
public ActionResult Result()
{
if (Request.Params.ToString().IndexOf("btnSubmit") > 0)
//
else
//
}
我建议您的“取消”按钮不应该提交表单。有几种方法可以处理这个问题,但最简单的方法是在导航回上一页的按钮上设置一个 javascript onclick 事件。( history.go(-1)
) 如果这不能满足您的需求,您还可以指定要导航到的特定路线。最复杂的是拦截客户端的点击并决定要点击哪个路由,但我通常只在我想在表单上有多个提交按钮来点击不同的操作时才这样做,这是一种相当罕见的情况。