簡體   English   中英

如何使用ASP.NET MVC在單個ViewModel中驗證多個單獨的模型?

[英]How to validate multiple, separate models in a single ViewModel using ASP.NET MVC?

所以我有兩個單獨的模型: ModelAModelB 我也有一個ViewModel: TheViewModel TheViewModel包含的實例ModelA以及ModelB

ModelAModelB具有各自的屬性和[ Required ]。 但是,當我去發布表單時, TheViewModel只驗證ModelA而忽略ModelB

如何使用一個ViewModel驗證多個模型?

一些代碼片段:

型號A

public class ModelA
{
    [Required]
    public string TheID { get; set; }
    public string TheName { get; set; }
}

型號B

public class ModelB
{
    [Required]
    public string TheCode { get; set; }
    public string TheType { get; set; }
}

視圖模型

public class TheViewModel
{
    public ModelA ModelAExample { get; set; }
    public ModelB ModelBExample { get; set; }
}

控制者

[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Create(TheViewModel vm)
{
   if (ModelState.IsValid)
   {
      return RedirectToAction("Index", "Home");
   }

   return View(vm.ModelAExample, vm.ModelBExample));
}

該ModelState中只會驗證,如果TheID財產ModelA是有效的,而不是TheCodeModelB

您只需要傳遞vm即可查看。 模型綁定僅在一個模型上發生。如果要在這種情況下傳遞多個模型,則必須使用諸如ViewBag等的Dynamic對象。

 return View(vm);

然后,您可以將View模型與View綁定在一起。您給出的代碼將不會運行返回View(vm.ModelAExample,vm.ModelBExample )); 在這里它將引發語法錯誤

ASP.NET MVC中的最佳實踐ViewModel驗證

這不會編譯:

return View(vm.ModelAExample, vm.ModelBExample));

如果將vm用作ViewModel,則驗證將是正確的:

return View(vm)

暫無
暫無

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

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