MVC模型粘合剂做从我的网页拿起值,并将其传递到我的操作方法在我的复杂的输入性能非常出色。
我试图创建页面,在这里用户可以配置的订单项列表,然后提交整个订单的购物车类型。
起初我使用Ajax表格,当用户想添加一个项目 - 将被传递给控制器存在了LineItem的名单中,新订单项将增加,并为列表中的局部视图返回。
不幸的是,看起来像一个Ajax表单提交后不能重定向到另一页。 我并不想这样做jQuery的,但因为我不想处理时,MVC模型绑定做的是这么好的工作,明确创建复杂对象的列表。
编辑:为了澄清,这里是我的问题:
我希望我的形式有2个操作,这两个要求了LineItem的名单传回。
这是我的理解是我必须做的使用JavaScript这些操作中的至少一个。 或者:
- 使用一个HtmlForm控件提交整个订单,返回一个新的视图
- 添加与jQuery于订单单击“添加项目”按钮时
要么
- 使用一个给ajaxForm动态地添加新的了LineItem
- 使用JavaScript做订单提交后重定向,但这意味着我必须使用JavaScript来提交数据,以及
有没有一种方法,我可以做到这一点不使用JavaScript? 我不想用JSON创造了LineItem的自己的列表时movdel粘结剂做它没有对我做任何工作。
好吧,我想知道你需要什么?
- 您可以通过表单action属性目标行动网址
- 序列化的形式将其发送到控制器
并重定向到新的一页。
$.ajax({
url: $('#FormID').attr('action'),
type: 'POST',
data: $('#FormID').serialize(),
success: function (result) {
window.location = result;
}
});
这里的一些文档信息API jQuery的.serialize()
“不幸的是,看起来像一个Ajax表单提交后不能重定向到另一页。”
这是不完全正确。 你可以有你的控制器的操作方法返回一个URL字符串JavaScript重定向。
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;
}
});
您可以在您的视图与表单提交返回......像这样的事情在你看来底部JavaScript重定向。
@if(Model.ShouldRedirect)
{
<script type="text/javascript">
window.location = '/path/to/new/url';
</script>
}