【问题标题】:ValidationSummary method showing validation error on initial loadValidationSummary 方法在初始加载时显示验证错误
【发布时间】:2014-07-18 20:34:08
【问题描述】:

当使用ValidationSummary() 时,我在初始创建时看到Name 的必需错误。

我已经尝试在构造函数中初始化 Name="" 并且不初始化(通过 Name=null) - 结果相同。

如何让ValidationSummary() 不在此字段上显示初始错误?

型号

public class Scenario
{
    public Int32 ID { get; set; }
    //user input
    [Required]
    [DisplayName("Scenario Name")]
    public String Name { get; set; }
    [Required]
    [DisplayName("Location")]
    public Int32 LocationId { get; set; }
    //..lots more, but omitted for question length

控制器

    // GET: Scenario/Create
    public ActionResult Create(Scenario copyFrom = null)
    {
        var vm = new EditScenarioViewModel
        {
            scenario = copyFrom ?? new Scenario(User.Identity.Name),
        };
        var periods = _performancePeriods.GetPeformancePeriodsHistory().ToList();
        vm.scenario.FiscalPeriodStarting = periods.ElementAt(2).PerformancePeriodID; //default is 3rd period back
        vm.scenario.FiscalPeriodEnding = periods.ElementAt(0).PerformancePeriodID;
        vm = PrepareDropdowns(vm);
        return View(vm);
    }

【问题讨论】:

  • 您是否知道验证运行在传递给操作的任何模型上,而不管方法(Get、Post、Put 等)如何?你将如何确定initial error 错误是什么?
  • ValidationSummary() 似乎不是很有用,如果它要在一个全新的对象上抛出错误......正确的使用模式是什么?
  • 互联网上有无数关于 GETting 没有错误的初始视图的 asp.net-mvc 方法的示例,以及有错误的 POSTed 视图,我无法理解为什么你将它们组合成一个动作。
  • 它们是不同的操作...我也有一个[HttpPost] 操作...它们共享相同的视图。该参数用于从现有的Scenario 创建副本。
  • 那为什么GET有参数呢?请发帖the complete code example

标签: c# validation asp.net-mvc-4 validationsummary


【解决方案1】:

使用 TempData 代替传递参数:

copyMe.ID = 0; //reset ID 
TempData["CreateCopy"] = copyMe 
return RedirectToAction("Create"); 

不带参数的Create():

public ActionResult Create() 
{ 
  scenario = TempData["CreateCopy"] as Scenario; 
  if (scenario == null) 
  { 
    scenario = new Scenario(User.Identity.Name); 
  }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 2018-02-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多