アクションインデックスを持つProductControllerがあります(これは空白のフォームを読み込みます)。その複雑な形態として、それ自体にも投稿フォームやドロップダウンなどのフォーム要素はMVCのPOST-Redirect-GETで検証メッセージが失われる
public ActionResult Index()
{
int id;
id = Convert.ToInt32(Request.Form["ddlLendingType"]);
if (id == 0)
id = 1;
ProductCommonViewModel viewData = new ProductCommonViewModel(_prodRepository.Method1(),_prodRepository.Method2())
return View(viewData);
}
私は、フォームから送信する]をクリックすると、それはそれを失敗した場合、それは製品を保存し、以下のようにコードがある掲示値 を表示検証エラーメッセージが表示されるはずです。次のように
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Save(FormCollection fc)
{
Product product = new Product();
try
{
...fill out all properties from form collection
_prodRepository.SaveProduct(product);
return RedirectToAction("Index", "Product");
}
catch (Exception ex)
{
TempData["Message"] = "An Error Occured while saving the product!";
Validation.UpdateModelStateWithRuleViolation(product, ViewData.ModelState);
// WHEN I call redirect to action Index on this view I can see the TempData variable but I cannot see validation summary and individual validation messages.How do I persist the msgs across requests?
}
}
ヘルパーメソッドの定義は次のとおりです。あまりにもTempDataをに
public static void UpdateModelStateWithRuleViolation(IRuleEntity entity, ModelStateDictionary dictModel)
{
List<RuleViolation> violations = entity.GetRuleViolations();
foreach (var item in violations)
{
dictModel.AddModelError(item.PropertyName, item.ErrorMessage);
}
}
にはどうすれば)のActionResultインデックスからのActionResultインデックス(int型)(呼ぶのですか? ? – chugh97
なぜそれが必要でしょうか? Index(int ddlLendingType)は、Index()の代わりになるはずです。しかし、それが必要な場合は、何も気にしません。「Public ActionResult Index(){return Index(1);}」が動作するはずです。 –