表单提交后,在“OnSuccess”功能中获取按钮单击ID

时间:2013-05-29 05:52:09

标签: javascript jquery asp.net-mvc-3 form-submit

我在mvc3中使用Ajax表单。

以下是代码。

<% using (Ajax.BeginForm("Method", "Conroller", new AjaxOptions
{
   UpdateTargetId = "PopupBody",
   HttpMethod = "post",
   OnSuccess = "OnSuccessContactInfoSave"
}, new { @id = "frmContactInfo" }))
{ %>



function OnSuccessContactInfoSave( data, textStatus ) {

alert( 'completed with success.' );
 }

现在,我在页面上有2个按钮,一个是提交按钮,另一个是普通按钮。 现在,我想知道Onsuccess功能中点击的按钮。

如何在“OnSuccessContactInfoSave”功能中获取它?

先谢谢


编辑:

这是我的观点

<% using (Ajax.BeginForm("SaveContactInfo", "ManageUser", new AjaxOptions
{
   UpdateTargetId = "PopupBody",
   HttpMethod = "Post"
}))
{ %> <div class="ciMain">

         <input type="submit" id="btnSaveAndClose" name="btn"  value="Save"   />
        <input type="submit" value="Save and continue to next step" name="btn" />
        <input type="button" value="Cancel"  />
      </div>
  <% } %>

这是控制器

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult SaveContactInfo(FormCollection userViewModel, ContactInfoViewModel model, string btn)
    {
        //string test = Request["btn"].ToString();
        try
        {

            return View("ContactInfo", model);
        }
        catch (Exception)
        {
            return View("ContactInfo", model);
        }

    }

1 个答案:

答案 0 :(得分:0)

首先,您需要在模型类中创建名为SubmissionType的属性 ContactInfoViewModel是这样的:

public class ContactInfoViewModel
{
    public string SubmissionType { get; set; }
    //Your rest of properties
}

现在,在您的视图中,在提交按钮中传递此属性名称,如下所示:

    <input type="submit" name="SubmissionType" id="btnSumit" value="Submit"/>
    <input type="submit" name="SubmissionType" id="btnOther" value="Other"/>

请记住,这些按钮必须位于表单标记下,并且不要忘记将模型与以下视图绑定:

    @model ClassNamespace.ContactInfoViewModel

现在你必须像这样重构你的行动方法:

     [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult SaveContactInfo(ContactInfoViewModel model)
    {          
        if (model.SubmissionType == "Submit")
        {

        }
        else
        {

        }
        try
        {

            return View("ContactInfo", model);
        }
        catch (Exception)
        {
            return View("ContactInfo", model);
        }
    } 

现在转到您的ajax表单标记,您还必须在此处传递模型,以便您可以在表单提交时获取模型的值。这样做:

@using (Ajax.BeginForm("SaveContactInfo", "ManageUser",Model, new AjaxOptions
{
UpdateTargetId = "PopupBody",
HttpMethod = "Post"
}))

正如您在上面的代码中所看到的,我还将模型作为 object routeValues 传递。

希望现在这可以解决你的问题。