0

フォームを表示するためにインデックス ページで使用している部分ビューがあります。インデックス ページのドロップダウン メニューから項目を選択すると、対応するフォーム データと共に部分ビューが読み込まれます。送信時にフォームを検証する必要がありますが、エラーを表示するときにページを正しくロードするコントローラーから何を返せばよいかわかりません。送信ボタンは現在部分ビューにあります。(送信をインデックス ページに移動しようとしましたが、フォームから何も返されませんでした。) 検証エラーがある場合、部分ビューは読み込まれますが、インデックス ビューのドロップダウン メニューは読み込まれません。この問題に対するいくつかの解決策を見てきましたが、おそらくドロップダウンが原因で、この状況で機能したものはありません。どんな助けでも大歓迎です。HTML が役立つかどうか教えてください。この投稿の書式設定に問題がありました。

コントローラ:

public class PrinterSettingsController : Controller
{
    public ActionResult Index()
    {
        ViewBag.Areas = db.Areas.ToList();
        PopulateDocumentTypeViewBag();
        return View();
    }

    public ActionResult AreaDocumentSettingsList(int areaId = 0)
    {
        PopulateDocumentTypeViewBag();

        //get area, contains list of document settings
        }

        return PartialView("_AreaDocumentSettingsList", selectedArea);
    }

    [HttpPost]
    public ActionResult AreaDocumentSettingsList(Area selectedArea)
    {

        if (IsPrinterValid(selectedArea.PrinterName) == false)
        {
            ModelState.AddModelError(string.Empty, "Incorrect printer path entered.");
        }

        if (ModelState.IsValid)
        {

            //do some stuff, save the new records to the database

            db.Entry(originalAreaRecord).CurrentValues.SetValues(selectedArea);
            db.SaveChanges();

            //if everything saves fine, go to a different page
        return RedirectToAction("Index", "Workorder");

        }
        //if there are errors -- this part needs to be changed -- show errors in partial view, but also display view it's nested inside of

        return View("_AreaDocumentSettingsList", selectedArea);

    }
4

1 に答える 1

0

@cshemby のリンクが役立ちました: Updating Partial Views with Unobtrusive AJAX in MVC 3

しかし、私の問題は、部分ビューを<div>javascript .changed イベントでタグにロードしていたことでした。これを修正するために@Html.RenderPartial、部分ビューのインデックス ページに を追加し、代わりにドロップダウンの値をコントローラーに渡しました。そうすれば、検証を含むページ全体をリロードできます。

于 2012-07-30T16:39:10.357 に答える