ASP.NETMVC表单发布和jquery视图未更新
我正在使用asp.NETMVC和jquery。我正在尝试制作一个formpost,并更新制作该帖子的ascx 我用下面的代码写这篇文章: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 =
$(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/>
}
}