次のようなコントローラーがあります。
public FooController : Controller
{
public ActionResult Index()
{
return View();
}
}
インデックス ビューの場合:
@{ Html.RenderPartial("~/Views/Bar/Add", new Models.Bar()); }
バー コントローラは次のようになります。
public BarController : Controller
{
public ActionResult Add()
{
var bar = new Bar();
return View(bar);
}
[HttpPost]
public ActionResult Add(Bar bar)
{
if(ModelState.IsValid)
{
_repository.AddBar(bar);
return RedirectToAction("Index", "Foo");
}
// This will return only the partial view (No Layout, no outer view)
return View("Add", bar);
// This will not show validation errors
// return RedirectToAction("Index", "Foo");
}
}
そして、ビューの追加は次のようになります。
@model Models.Bar
@using(Html.BeginForm("Add", "Bar", FormMethod.Post))
{
Name: @Html.TextBoxFor(x => x.Name)
<input type="submit" value="Add Bar" />
@Html.ValidationSummary()
}
私の問題は、私が戻った場合View("Add", bar)
、部分的なビューしか得られず、他には何も得られないことです(私が望むものではありません)。しかし、代わりにRedirectToAction("Index", "Foo")
検証に合格したかどうかを返すと、もちろん、検証の概要の検証エラーは失われます。
このような部分ビューで検証を使用する方法はありますか?