0

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つのボタンがあり、1つは送信ボタンで、もう1つは通常のボタンです。今、私は 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);
        }

    }
4

1 に答える 1

0

まず、モデル クラス ContactInfoViewModel に SubmissionType という名前のプロパティを次のように作成する必要があります。

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"/>

これらのボタンは form タグの下にある必要があることに注意してください。また、次のようにモデルをビューにバインドすることを忘れないでください。

    @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 フォームタグに来て、フォーム送信時にモデルの値を取得できるように、ここでModelも渡す必要があります。次のようにします。

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

上記のコードでわかるように、モデルもオブジェクト routeValuesとして渡しています。

これで問題が解決することを願っています。

于 2013-05-29T07:27:48.000 に答える