簡體   English   中英

ASP.Net MVC使用具有多個ValidationSummary的AddModelError進行查詢字符串驗證

[英]ASP.Net MVC Using AddModelError with multiple ValidationSummary for querystring validation

我有一個包含兩種形式的視圖

@Html.ValidationSummary()

加載頁面后,將檢查querystring參數,如果存在,則調用:

ModelState.AddModelError("", "Querystring error");

但是,即使我在表單模型中指定屬性,這也會導致錯誤消息同時出現在@Html.ValidationSummary()中。

我有一個解決方法,就是在模型的表單中有一個單獨的錯誤消息屬性,並填充該錯誤消息屬性,然后顯示它是否存在於標簽中,但是想知道是否可以指定一個單獨的@Html.ValidationSummary()在表格中允許我使用ModelState.AddModelError嗎?

遵循@GSerg提供的有用信息后,我認為我會分享自己的解決方案。

因此,我將每個表單分成兩個單獨的局部視圖,而不是在同一個視圖中包含兩個表單,然后從主視圖中調用每個表單...

@Html.Action("_RequestPartial")
@Html.Action("_LoginPartial")

每個局部視圖都將包含要傳遞給它的模型,以及一個內部帶有Html.ValidationSummary()Html.BeginForm

然后在Controller中,設置代碼以正常返回視圖(在這種情況下為Index視圖)...

[HttpGet]
public ActionResult Index()
{
     return View();
}

然后對於部分視圖,為每個帶有ChildActionOnly注釋的部分視圖設置PartialViewResult

[ChildActionOnly]
public PartialViewResult _RequestPartial()
{
      ... code that populates model you want to pass ...

      return PartialView(model);
}

[ChildActionOnly]
public PartialViewResult _LoginPartial()
{
      ... code that populates model you want to pass ...

      return PartialView(model);
}

希望這對某人有幫助。

要顯示特定的驗證消息,請參見下面的代碼段。 控制器:

[HttpGet]
        public ActionResult Index()
        {
            ModelState.AddModelError("Error1", "Querystring error");
            return View(new SampleViewModel());
        }

查看:

@Html.ValidationMessage("Error1")

只是試圖創建一個小提琴以獲得完整的圖片。 https://dotnetfiddle.net/GoMMhy

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM