Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用ajax将页面数据发布到呈现局部视图的操作?_C#_Asp.net Mvc_Jquery - Fatal编程技术网

C# 如何使用ajax将页面数据发布到呈现局部视图的操作?

C# 如何使用ajax将页面数据发布到呈现局部视图的操作?,c#,asp.net-mvc,jquery,C#,Asp.net Mvc,Jquery,我有一个名为“ContactsFilters”的局部视图,其中显示一些搜索过滤器,我们在这些过滤器上有一个“Filter”按钮: 问题是post数据(如公司名称、用户ID等)没有被发回 如何将数据发回服务器 我知道一种可能的方法是使用“data:{}”,但我有10多个文本框。我希望我可以只说post,所有这些都是MVC魔术师发布的 我知道如果我定义一个表单post,它将发布对象,但在这种情况下,我将无法填充我的div,因为它将在一个单独的页面而不是同一页面中显示新视图。不幸的是,这里没有魔力。不

我有一个名为“ContactsFilters”的局部视图,其中显示一些搜索过滤器,我们在这些过滤器上有一个“Filter”按钮:

问题是post数据(如公司名称、用户ID等)没有被发回

如何将数据发回服务器

我知道一种可能的方法是使用“data:{}”,但我有10多个文本框。我希望我可以只说post,所有这些都是MVC魔术师发布的


我知道如果我定义一个表单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 -->
    }