2012-03-03 23 views
1

我與MVC3玩弄,並試圖創建一個簡單的接觸形式的崗位值回使用jQuery $就服務器。我似乎無法發佈自己的狀態值回服務器

在我查看了我的聯繫形式,結合我創建了一個ContactViewModel的時刻:

public class ContactViewModel 
{ 
    [Required] 
    public string Name { get; set; } 

    [Required] 
    [DataType(DataType.EmailAddress)] 
    public string Email { get; set; } 

    [Required] 
    public string Message { get; set; }  
} 

這裏是我的[HttpPost]因爲一旦它被提交處理提交的表單方法:

[HttpPost] 
    public ActionResult SubmitForm(ContactViewModel contactVM) 
    { 
     if (!ModelState.IsValid) 
     { 
      return View(contactVM); 
     } 

     // TODO: If the form's valid then save the data 

     return RedirectToAction("Thankyou"); 
    } 

如您所見,此方法需要一個ContactViewModel數據類型。我很困惑,因爲它似乎我沒有這個類在我的JavaScript可用,所以我想我必須在js中重建類,然後回發給我的SubmitForm方法?下面是我用嘗試和實現這一目標的代碼:

<script type="text/javascript"> 
    $(document).ready(function() { 
     var contactVM = { ContactViewModel : [{ 
      Name: $('#Name').val(), 
      Email: $('#Email').val(), 
      Message: $('#Message').val() }] 
     }; 

     $.ajax({ 
      url: '/Contact/SubmitForm', 
      type: "POST", 
      data: JSON.stringify(contactVM), 
      dataType: "json", 
      contentType: "application/json; charset=utf-8", 
      success: function() { 
       alert('Success!'); 
      }, 
      error: function() { 
       alert('Failure!'); 
      } 
     }); 
    });   
</script> 

正如你所看到的,我已經試過在JavaScript來創建完全相同的類,這樣我可以將它張貼回服務器,但是當我遍歷代碼,似乎我在SubmitForm方法中接受的contactVM變量只有空值。

我哪裏錯了?我是否在正確的軌道上?道歉,如果我沒有解釋清楚!

謝謝!

更新:原來我是一個傻瓜,只調用了$就功能頁面加載,而不是被點擊的按鈕時!什麼安德魯下面所述的合併,都似乎是工作:-)

+0

很高興你知道了。我正要問,如果這些字段是在頁面加載':)''填充的 – 2012-03-03 16:11:29

回答

1

在這種情況下,沒有必要在JavaScript中的「包裝」 ContactViewModel。你應該能夠簡單地寫:

$(document).ready(function() { 
    var contactVM = { 
     Name: $('#Name').val(), 
     Email: $('#Email').val(), 
     Message: $('#Message').val() 
    }; 

    $.ajax({ 
     url: '/Contact/SubmitForm', 
     type: "POST", 
     data: JSON.stringify(contactVM), 
     dataType: "json", 
     contentType: "application/json; charset=utf-8", 
     success: function() { 
      alert('Success!'); 
     }, 
     error: function() { 
      alert('Failure!'); 
     } 
    }); 
});  

模型綁定將帶您提交的對象,並將其映射到ContactViewModel

相關問題