C# 如何使用ajax将页面数据发布到呈现局部视图的操作?
我有一个名为“ContactsFilters”的局部视图,其中显示一些搜索过滤器,我们在这些过滤器上有一个“Filter”按钮: 问题是post数据(如公司名称、用户ID等)没有被发回 如何将数据发回服务器 我知道一种可能的方法是使用“data:{}”,但我有10多个文本框。我希望我可以只说post,所有这些都是MVC魔术师发布的C# 如何使用ajax将页面数据发布到呈现局部视图的操作?,c#,asp.net-mvc,jquery,C#,Asp.net Mvc,Jquery,我有一个名为“ContactsFilters”的局部视图,其中显示一些搜索过滤器,我们在这些过滤器上有一个“Filter”按钮: 问题是post数据(如公司名称、用户ID等)没有被发回 如何将数据发回服务器 我知道一种可能的方法是使用“data:{}”,但我有10多个文本框。我希望我可以只说post,所有这些都是MVC魔术师发布的 我知道如果我定义一个表单post,它将发布对象,但在这种情况下,我将无法填充我的div,因为它将在一个单独的页面而不是同一页面中显示新视图。不幸的是,这里没有魔力。不
我知道如果我定义一个表单post,它将发布对象,但在这种情况下,我将无法填充我的div,因为它将在一个单独的页面而不是同一页面中显示新视图。不幸的是,这里没有魔力。不过,您仍然有几个选择:
$.ajax({
...
data: $("#theForm").serialize(),
...
});
<form id="theForm">
...
<!-- your markup here -->
...
</form>
$.ajax({
...
数据:$(“#格式”).serialize(),
...
});
...
...
@using (Ajax.BeginForm("ContactsList", "ControllerName", new AjaxOptions {/*some options here*/}))
{
<!-- markup here -->
}
@使用(Ajax.BeginForm(“ContactsList”、“ControllerName”、新的AjaxOptions{/*此处的一些选项*/}))
{
}
有趣的是,对于第一种方法,它传递一个字符串,那么如何在服务器上反序列化它呢?我的意思是有内置的功能吗?否则,这种方法不会更好。我会研究你建议的第二个选项。@TheLight,关于第一个选项-绝对正确,它是。实际上,它会生成一个查询字符串,如
param1=value1¶m2=value2
。这就是ASP.NET MVC神奇之处——如果您的类VmContactsFilters
具有属性Param1
和Param2
(或者,另一种方法是,您的操作接受名为Param1
和Param2
)的参数,MVC将能够解析上面的字符串并为您创建一个实际的对象。
$.ajax({
...
data: $("#theForm").serialize(),
...
});
<form id="theForm">
...
<!-- your markup here -->
...
</form>
@using (Ajax.BeginForm("ContactsList", "ControllerName", new AjaxOptions {/*some options here*/}))
{
<!-- markup here -->
}