我有一个表单,我希望用户提交到服务器。 (简化)模型看起来像这样:
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)
{
...
}
我在客户端(jQuery)中有一个“ComplexObject”数组,我用用户的输入填充。
问题:如何设置“MyArray”值以包含jQuery数组值并在控制器中检索此数组?
注意:我已经搜索过这个问题了,我发现的所有解决方案都谈到了ajax。我对这些解决方案并不感兴趣,我想知道是否可以在没有ajax的情况下完成。
感谢。
答案 0 :(得分: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>
然后,当您需要发送ComplexObject
和MyInt
时,您可以将该对象序列化为JSON字符串,将其放入隐藏字段并提交表单:
$('[name="ComplexObject"]').val( JSON.stringify( userObject ) );
$('#myform').submit();