2013-03-12 62 views
0

MVC模型綁定器在從我的頁面獲取值並將其作爲我的複雜輸入中的屬性傳遞給我的操作方法方面做得非常好。如何使用jQuery的模型綁定

我正在嘗試創建購物車類型的頁面,用戶可以在其中配置訂單項列表,然後提交整個訂單。

起初,我在使用Ajax表單時用戶想要添加一個項目 - 現有線條列表將傳回給控制器,將添加新的lineitem,並返回列表的部分視圖。

不幸的是,看起來您在提交Ajax表單後無法重定向到其他頁面。我不想在jQuery中這樣做,因爲我不想在MVC模型綁定器做得很好時處理顯式創建複雜對象列表。

編輯:爲了澄清,這裏是我的問題:

我希望我的形式有2個操作,這兩個要求了LineItem的名單傳回。

這是我的理解,我必須至少做這些操作之一使用JavaScript。或者:

  1. 使用一個HtmlForm控件提交整個訂單,返回一個新的觀點
  2. 添加於訂單與jQuery當 「添加項目」 按鈕被點擊

OR

  1. 使用AjaxForm動態添加新的線條
  2. 使用javascript在提交訂單後執行重定向,但這意味着我必須提交第e數據使用JavaScript以及

有沒有辦法,我可以做到這一點,而不使用JavaScript?我不想用JSON自己創建lineitems列表,當movdel聯編程序沒有做任何工作時就完成了。 「

+0

請澄清你的問題。我正在失去跟蹤你的問題是模型綁定,重定向,還是什麼... – 2013-03-12 00:03:13

+0

@DaveA,刪除了最後一部分,並用我要找的更清晰的解釋代替它。 – chani 2013-03-12 00:32:35

+0

更清晰。但似乎你已經有2個有效的答案。 – 2013-03-12 00:34:53

回答

2

好的,我想明白你需要什麼...

  • 得到表單action屬性
  • 目標動作URL序列化的形式將其發送到控制器

,並重定向到新的頁面。

$.ajax({ 
url: $('#FormID').attr('action'), 
type: 'POST', 
data: $('#FormID').serialize(), 
success: function (result) { 
    window.location = result; 
} 
}); 

這裏一些文檔信息API jquery .serialize()

+0

謝謝!這正是我需要的。完美地工作,並且不會搞亂自己創建JSON對象。 – chani 2013-03-12 01:32:40

1

」不幸的是,看起來您在提交Ajax表單後無法重定向到其他頁面。「

這不完全正確。你可以讓你的控制器的action方法返回一個javascript重定向的url字符串。

public string SomeMethod(ViewModel vm) 
{ 
    ... 
    return "http://www.google.com"; 
} 

,並在您的視圖

$.ajax({ 
url: "@(Url.Action("SomeMethod"))", 
type: 'POST', 
traditional: true, 
data: { ViewModel: jsonObject }, 
success: function (result) { 
    window.location = result; 
} 
}); 
+0

我仍然必須自己創建ViewModel json,對不對?無論如何有模型聯編程序獲取此信息? – chani 2013-03-12 00:33:01

1

您可以在您的視圖與表單提交返回......像這樣的事情在你看來底部JavaScript重定向。

@if(Model.ShouldRedirect) 
{ 
    <script type="text/javascript"> 
     window.location = '/path/to/new/url'; 
    </script> 
} 
+0

有沒有辦法在模型中傳遞參數? – chani 2013-03-12 00:33:43

+0

將模型作爲參數傳遞給什麼? – 2013-03-12 00:37:17

+0

進入在該URL上調用的操作方法。 – chani 2013-03-12 00:43:18

相關問題