2013-05-29 5 views
0

Я использую форму Ajax в mvc3.Получить кнопку нажата ID в функции «OnSuccess» после формы submit

Ниже приведен код.

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



function OnSuccessContactInfoSave(data, textStatus) { 

alert('completed with success.'); 
} 

Теперь у меня есть две кнопки на одной странице для отправки, а другая - обычная кнопка. Теперь я хочу знать нажатую кнопку в функции 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

Я попытался с этим: http://stackoverflow.com/a/14980550/1752787 –

+0

Но получение запроса ["btn"] == null в этой строке: Response.AppendHeader («X-Button», Request [ "БТН"]); –

+0

AM Я что-то не хватает? –

ответ

0

Прежде всего, необходимо создать свойство с имя Submis sionType в классе модели 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); 
     } 
    } 

Сейчас подходит к вашей форме Аякса тегу, вы также должны пройти Модели здесь, так что вы можете получить значение вашей модели во время представление формы. Нравится ли это так:

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

Как вы можете видеть в приведенном выше коде я также прошел модель как объекта routeValues ​​.

Надеюсь, теперь это решит вашу проблему.

Смежные вопросы