C# MVC 4视图随数据更改而重新加载
我有一个简单的控制器和视图: 我只想用新数据重新加载C# MVC 4视图随数据更改而重新加载,c#,asp.net-mvc,asp.net-mvc-4,razor,C#,Asp.net Mvc,Asp.net Mvc 4,Razor,我有一个简单的控制器和视图: 我只想用新数据重新加载Index.cshtmlview页面。我已经彻底调试了代码。实际上,当控件转到索引(字符串值)方法时,单击“ul”,模型对象将填充新数据,即使在cshtml页面中,模型也会在调试器中显示新列表,但视图不会刷新。我真的不知道为什么。。有人能帮我吗? 如果我在某个地方犯了可怕的错误,请原谅我的无知,因为我是MVC新手。 先谢谢你。。。 控制器: namespace MVCTestApp1.Controllers { public class
Index.cshtml
view页面。我已经彻底调试了代码。实际上,当控件转到索引(字符串值)
方法时,单击“ul”
,模型对象将填充新数据,即使在cshtml页面中,模型也会在调试器中显示新列表,但视图不会刷新。我真的不知道为什么。。有人能帮我吗?
如果我在某个地方犯了可怕的错误,请原谅我的无知,因为我是MVC新手。
先谢谢你。。。
控制器:
namespace MVCTestApp1.Controllers
{
public class TestController : Controller
{
//
// GET: /Test/
public ActionResult Index()
{
ModelState.Clear();
List<string> ll = new List<string>();
ll.Add("qq");
ll.Add("aa");
ll.Add("zz");
return View(ll);
}
[HttpPost]
public ActionResult Index(string value)
{
ModelState.Clear();
List<string> ll = new List<string>();
ll.Add("kkk");
ll.Add("qq");
ll.Add("aa");
ll.Add("zz");
return View(ll);
}
}
}
View:
@model IEnumerable<string>
@{
ViewBag.Title = "Index";
}
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<h2>Index</h2>
<ul id="bb">
@foreach (var i in Model)
{
<li>@Html.DisplayFor(ir=>i)</li>
}
</ul>
}
namespace MVCTestApp1.Controllers
{
公共类TestController:控制器
{
//
//获取:/Test/
公共行动结果索引()
{
ModelState.Clear();
List ll=新列表();
ll.添加(“qq”);
11.添加(“aa”);
ll.添加(“zz”);
返回视图(ll);
}
[HttpPost]
公共操作结果索引(字符串值)
{
ModelState.Clear();
List ll=新列表();
11.添加(“kkk”);
ll.添加(“qq”);
11.添加(“aa”);
ll.添加(“zz”);
返回视图(ll);
}
}
}
视图:
@模型IEnumerable
@{
ViewBag.Title=“Index”;
}
@使用(Html.BeginForm()){
@Html.ValidationSummary(true)
指数
@foreach(模型中的var i)
{
- @DisplayFor(ir=>i)
}
}
我假设您编写了一些javascript代码,这样当用户单击
的元素时,您触发了对[HttpPost]
操作的AJAX调用,将所选值发送到服务器。代码的问题可能是您可能忘记了在success
回调中使用新内容更新DOM。因此,要实现这一点,您可以先将
内容放在局部视图中:
List.cshtml
:
@model IEnumerable<string>
@foreach (var i in Model)
{
<li>@Html.DisplayFor(ir=>i)</li>
}
代码看起来不错。它应该可以正常工作,除非中间有其他东西干扰。页面中是否包含任何脚本?另外,检查chrome或firebug(在firefox中)的网络选项卡,了解发生了什么。
@model IEnumerable<string>
@{
ViewBag.Title = "Index";
}
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)
<h2>Index</h2>
<ul id="bb">
@Html.Partial("_List", Model)
</ul>
}
[HttpPost]
public ActionResult Index(string value)
{
List<string> ll = new List<string>();
ll.Add("kkk");
ll.Add("qq");
ll.Add("aa");
ll.Add("zz");
return PartialView("_List", ll);
}
$(function() {
$('#bb').on('click', 'li', function() {
var value = $(this).html();
$.ajax({
url: $(this).closest('form').attr('action'),
type: 'POST',
data: { value: value },
success: function(partialView) {
$('#bb').html(partialView);
}
});
});
});