2014-07-15 102 views
0

我有一個表單,我希望用戶提交給服務器。 的(簡化的)模型看起來像這樣:將複雜對象數組從客戶端傳遞到服務器WITHOUT AJAX

public class MyData 
{ 
    public int MyInt { get; set; } 
    public ICollection<ComplexObject> MyArray { get; set; } 
} 

public class ComplexObject 
{ 
    public int MyComplexObjectInt { get; set; } 
    public string MyComplexObjectString { get; set; } 
} 

接收到該對象的控制器操作看起來像這樣:

[HttpPost] 
public ActionResult Create(MyData model) 
{ 
    ... 
} 

我有一個「ComplexObject」陣列中的客戶端(jQuery的),該我用用戶的輸入填充。

問題:如何設置「MyArray」值以包含jQuery數組值並在控制器中檢索此數組?

注意:我已經使用了這個問題,我找到的所有解決方案都講述了ajax。我對這些解決方案並不感興趣,我想知道是否可以在沒有ajax的情況下完成。

謝謝。

+0

如果事情可以用AJAX來完成它可以使用標準的POST或GET請求來完成也是如此。如果你的端點是'process.aspx',你只需要使用'

'而不是'$ .ajax('process.aspx')'。 – pawel

+0

@pawel ok,那麼我怎麼能把這個jquery數組和其他模型字段(我的例子中的「MyInt」)一起傳遞給控制器​​? – ofirbt

+0

沿着這些方向:」>',然後設置在提交表單前,將ComplexObject輸入到'JSON.stringify(jQueryArray)'。 – pawel

回答

0

如果AJAX可以完成某件事,那麼也可以使用標準的POST或GET請求來完成。如果您的端點是process.aspx,則只需使用<form action="process.aspx">而不是$.ajax('process.aspx')

所以,如果你需要從後臺得到一些數據,與用戶提供的數據有一個完整的往返(不AJAX),你可以使用表單和隱藏的投入結合起來,然後處理在服務器上:

<form action="process.aspx" method="POST" id="myForm"> 
    <input type="hidden" name="MyInt" value="<%= MyInt %>" /> 
    <input type="hidden" name="ComplexObject" value="" /> 
</form> 

然後,當你需要與MyInt一起發送ComplexObject,您可以序列化對象作爲JSON字符串,把它變成了隱藏字段,並提交形式:

$('[name="ComplexObject"]').val(JSON.stringify(userObject)); 
$('#myform').submit(); 
相關問題