0

我已将 Asp.net MVC 与 Sharepoint 站点集成。它工作得很好。但我也在使用默认的 Sharepoint 母版页(~masterurl/default.master即)。问题是这个特定的母版页将整个页面包裹在一个form元素中,而所有 Sharepoint 页面只是普通的 Asp.net WebForm 页面。

我的 MVC 内容应该有它自己的form和我想提交给服务器的输入元素。Ajax 调用显然没有那么大的问题。$("form").serializeArray()如果我保留原始form元素,我将无法使用。但尽管如此,正常的回发还是有问题的,因为提交事件上有 WebForm 功能,它们会向服务器发送太多数据。

我将使用普通回发以及 Ajax 回发。主要问题是正常的回发。

所以我有两种可能都应该运行$(document).ready()

  1. 删除表单元素并保持所有其他内容不变。在 jQuery 中,它可能意味着在form元素前面加上 a div,将其内容移动到这个 div,然后删除form
  2. 直接将form元素更改为div. 就浏览器处理而言,这可能会更快,但我不知道该怎么做。

因此,如果有人可以详细说明 2. 的解决方案,并就这两种可能的解决方案提供一些输入:应该做哪一个以及为什么。

编辑

还有第三种可能。我可以根据需要创建我的输入元素,但将它们包含在一个div元素中。当用户想要提交我的表单div无论如何都不是表单)时,我可以:

  1. 动态调用$("div.form").serializeArray()
  2. 创建一个表单元素
  3. 用序列化值填充它
  4. 将表单附加到正文
  5. 提交它。

看起来很乏味,但它可以工作。前两个解决方案似乎更简单。

4

1 回答 1

1

如果您通过$.ajax()我提交,我会.serialize()直接使用元素,如下所示:

$.ajax({
  url: "Path/Action",
  type: "post",
  data: $("#someContainer :input").serialize(),
  success: function(data) {
    //do something
  }
});

或更短的$.post()版本:

$.post("Path/Action", $("#someContainer :input").serialize(), function(data) {
  //do something
});

这不需要任何<form>生成或其他技巧,只需一个普通的 jQuery AJAX 帖子(或者GET,任何需要的)。

于 2010-10-07T10:50:58.207 回答