Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.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
ASP.NETMVC表单发布和jquery视图未更新_Jquery_Asp.net Mvc_Post - Fatal编程技术网

ASP.NETMVC表单发布和jquery视图未更新

ASP.NETMVC表单发布和jquery视图未更新,jquery,asp.net-mvc,post,Jquery,Asp.net Mvc,Post,我正在使用asp.NETMVC和jquery。我正在尝试制作一个formpost,并更新制作该帖子的ascx 我用下面的代码写这篇文章: $(document).ready(function() { $('#search-form').submit(function() { var form = $('#search-form'); var action = form.attr('action'); var serializedForm =

我正在使用asp.NETMVC和jquery。我正在尝试制作一个formpost,并更新制作该帖子的ascx

我用下面的代码写这篇文章:

$(document).ready(function() {
    $('#search-form').submit(function() {
        var form = $('#search-form');
        var action = form.attr('action');
        var serializedForm = form.serialize();

        $.post(action, serializedForm, function() {

        });
        return false;
    });
});
然后我有一个动作:

[HttpPost]
public ActionResult Method(FormCollection collection)
{
    //code...
    ViewData["post"] = "Hello world";
    return View();
}

这很好用。代码正在执行,但问题发生在返回视图之后。例如,如果我试图在视图中打印“Hello world”,它将永远不会更新。有人能解释一下为什么有人知道解决方案吗?

当您发出这样的AJAX请求时,您在返回中所能访问的也是由action方法生成的视图返回的结果,而不是与控制器关联的完整数据存储

如果您想显示“Hello world”文本,那么您必须将其作为视图的一部分写入页面,或者将其包含在输出响应中

Response.Write("Hello World");

视图返回后,您无权访问ViewData或TempData集合。听起来这正是您所期望的。

我建议您在局部视图中创建ajax.form,然后

<div id="DIVtoUpdate"> Render.Partial("PartialViewName",model);</div>
所以,当您执行post和控制器操作时,应该返回

return PartialView("PartialViewNAme",model);
您的div将使用新数据进行更新。
(注意:禁用ajax:cache,在某些情况下,您可能会遇到问题)

asp.net将使用与您的操作同名的视图,或者您应该明确告知最终返回的视图。例如:返回视图(“视图名称”)

ViewData是一个基于字典的集合,它将在客户端提供,类似于ViewState

你必须把它浇铸出来,并且应该使用它

比如说

在查看页面中

String _data =(String)ViewData["post"];
然后,如果您希望在页面中显示

<span>@_data</span>
@\u数据

@{
_资料
}

再看一个例子 在这里,您可以迭代,也可以生成动态html。MVC为这样的动态控件提供了更好的选择

@{
 IList<items> itemlist=(IList<items>)ViewData["yourString"];
   foreach(item in itemlist )
  {

    <label>item</label> <br/>

  }
}
@{
IList itemlist=(IList)ViewData[“yourString”];
foreach(项目列表中的项目)
{
项目
} }
您可能会得到如下输出
项目1
项目2
项目3
等等

@{

<span>_data</span>

}
@{
 IList<items> itemlist=(IList<items>)ViewData["yourString"];
   foreach(item in itemlist )
  {

    <label>item</label> <br/>

  }
}