【发布时间】:2013-09-08 12:03:00
【问题描述】:
我在使用 ASP.NET MVC3 (Razor) 和 Ajax 时遇到了 PartialViews 的问题。
这是我的情况:
我有简单的测试视图模型:
public class MyModel
{
public string MyText { get; set; }
public int MyNumber { get; set; }
}
我的目标是有一个表格。根据发布的数据,我想显示不同的部分视图。 我创建了主窗体(索引视图):
@using (Ajax.BeginForm("Index", "Test", new AjaxOptions() { HttpMethod = "POST", UpdateTargetId = "testdiv" }))
{
<div id="testdiv">
@Html.Partial("Cat")
</div>
<input type="submit" value="Go" />
}
我创建了两个不同的局部视图,它们应该在发布主表单时显示(取决于发布的数据): 猫视图:
<span>cat view</span>
@Html.TextBoxFor(m=> m.MyText)
@Html.TextBoxFor(m=> m.MyNumber)
<span>@DateTime.Now.Second</span>
狗观:
<span>dog view</span>
@Html.TextBoxFor(m=> m.MyText)
@Html.TextBoxFor(m=> m.MyNumber)
<span>@DateTime.Now.Second</span>
我的控制器包含四个动作:
[HttpGet]
public ActionResult Index()
{
MyModel model = new MyModel();
return View(model);
}
[HttpPost]
public PartialViewResult Index(MyModel model)
{
if (model.MyNumber == 1)
{
return Cat(model);
}
else
{
return Dog(model);
}
}
[HttpPost]
public PartialViewResult Cat(MyModel model)
{
model.MyText = model.MyText + " K";
return PartialView("Cat", model);
}
[HttpPost]
public PartialViewResult Dog(MyModel model)
{
model.MyText = model.MyText + " P";
return PartialView("Dog", model);
}
我的问题是,当执行 Cat 或 Dog 动作时,模型中的 MyText 发生了变化,但是当显示正确的局部视图时,我看到旧的(未更新的)MyText。为什么? 欢迎任何其他想法如何根据表单中发布的数据显示特定的局部视图。
【问题讨论】:
标签: c# asp.net-mvc-4 asp.net-ajax asp.net-mvc-partialview