部分/ダイアログで削除ビューを表示します。最初はアイテムが選択されていません。ユーザーが[OK]ボタンをクリックすると、[投稿の削除]アクションとそのパラメーターselectedIdsがNULLになります。大丈夫ですが、どうすればユーザーにエラーメッセージを表示できますか?
コード「returnPartialView」に到達すると、ビューで例外が発生し、Model.DisplayListが空ではありません。
ここで2つの問題が混在しているように見えますが、一方が他方を解決できると思います...
アクションの削除:
[HttpGet]
public ActionResult Delete()
{
var templates = _templateDataProvider.GetTemplates();
var listViewModel = new ListViewModel<Template>();
listViewModel.DisplayList = templates;
return PartialView(listViewModel);
}
[HttpPost]
public ActionResult Delete(int[] selectedIds)
{
if (selectedIds == null)
{
ModelState.AddModelError("Name", "Nothing selected");
}
if (ModelState.IsValid)
{
return Json(new { success = true });
}
return PartialView();
}
ビューの削除:
@model ITMS.ViewModels.ListViewModel<ITMS.Models.Template>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
@using (Html.BeginForm("Delete", "Template"))
{
@Html.ValidationSummary(false)
@Html.ListBoxFor(x => x.SelectedIds, new SelectList(Model.DisplayList, "Id", "Name"),new { @class = "select"} )
}
私がこれを返すとき:
return PartialView(new ListViewModel<Template> { DisplayList = _templateDataProvider.GetTemplates() });
その後は機能しますが、このためにデータベースに再度アクセスする必要はありません。