如何使用模型与jquery结合(How to use model binding with jque

2019-11-01 17:51发布

MVC模型粘合剂做从我的网页拿起值,并将其传递到我的操作方法在我的复杂的输入性能非常出色。

我试图创建页面,在这里用户可以配置的订单项列表,然后提交整个订单的购物车类型。

起初我使用Ajax表格,当用户想添加一个项目 - 将被传递给控制器​​存在了LineItem的名单中,新订单项将增加,并为列表中的局部视图返回。

不幸的是,看起来像一个Ajax表单提交后不能重定向到另一页。 我并不想这样做jQuery的,但因为我不想处理时,MVC模型绑定做的是这么好的工作,明确创建复杂对象的列表。

编辑:为了澄清,这里是我的问题:

我希望我的形式有2个操作,这两个要求了LineItem的名单传回。

这是我的理解是我必须做的使用JavaScript这些操作中的至少一个。 或者:

  1. 使用一个HtmlForm控件提交整个订单,返回一个新的视图
  2. 添加与jQuery于订单单击“添加项目”按钮时

要么

  1. 使用一个给ajaxForm动态地添加新的了LineItem
  2. 使用JavaScript做订单提交后重定向,但这意味着我必须使用JavaScript来提交数据,以及

有没有一种方法,我可以做到这一点不使用JavaScript? 我不想用JSON创造了LineItem的自己的列表时movdel粘结剂做它没有对我做任何工作。

Answer 1:

好吧,我想知道你需要什么?

  • 您可以通过表单action属性目标行动网址
  • 序列化的形式将其发送到控制器

并重定向到新的一页。

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

这里的一些文档信息API jQuery的.serialize()



Answer 2:

“不幸的是,看起来像一个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;
 }
});


Answer 3:

您可以在您的视图与表单提交返回......像这样的事情在你看来底部JavaScript重定向。

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


文章来源: How to use model binding with jquery