2017-06-12 30 views
0

我試圖傳遞一個字符串(表示已被單擊的按鈕)和表單的內容,但是當代碼到達actionresult時,vModel對象始終爲空。任何人都可以幫我解決它嗎?無法傳遞表單內容以查看動作模型

下面是代碼片段:

var form = $('#Application'); 
    if (form.valid()) { 
      var data = { 
       'submitButton': "Submit your application", 
       'vModel': JSON.stringify(form.serialize()) 
      }; 

      $("#submit-application-dialog").dialog({ 
       resizable: false, 
       height: "auto", 
       width: 400, 
       modal: true, 
       buttons: { 
        "Submit application": function() { 
         $.ajax({ 
          url: form.attr('action'), 
          type: 'POST', 
          data: data, 
          success: $("#submit-application-dialog").dialog("close") 
         }); 
        }, 
        Cancel: function() { 
         $(this).dialog("close"); 
        } 
       } 
      }); 
    } 

而且的ActionResult:

[HttpPost] 
    public ActionResult Application(string submitButton, ApplicationViewModel vModel) 
    { 
    ... 

任何幫助將不勝感激。

謝謝。

回答

0

我已經做了一個類似的事情,通過將值附加到查詢字符串像下面,而不是有一個控制器操作參數。

var myData = $('#frmMyForm').serialize(); 
myData = myData + "&ButtonClicked=" + "Button1";    

      $.ajax({ 
       type: "POST", 
       url: "@Url.Action("MyActionName", "MyControllerName")", 
       data: myData, 
       contentType: 'application/x-www-form-urlencoded; charset=UTF-8', 
       success: function(data) { 
       \\Do stuff here if needed; 
       } 

然後在控制器中,我從表單集合中提取值。

var buttonName = Request.Form["ButtonClicked"]; 

有可能是一個更好的,或者我們應該說這樣做的不太笨重的方式,但這個工作對我來說。

希望幫助

你好,這裏居然是一個更好的解決方案,我認爲昨晚的。爲您的視圖模型添加一個屬性,也許稱爲「ButtonClicked」。

然後在JQuery中,像下面那樣捕獲提交的點擊事件並相應地設置按鈕名稱。

<script> 
    $(document).ready(function() { 

     $(document).on("click", "#btnSubmitButton", function() { 
      $("#ButtonClicked").val("ThisButton"); 
     }); 

    }); 
</script> 

然後綁定到發佈的模型。 謝謝

+0

謝謝你,這真的幫助我解決方案。所以我在ActionResult中保留了原來的兩個屬性,但是使用了'var myData ...'代碼,現在它正確地傳遞了所有內容:)。 – Diz19791

+0

@ Diz19791 - 嗨..我有一個更好的解決方案..我已經編輯了答案。 TA – Wheels73