【问题标题】:MVC3 [Required] validation message showing prior to form submission在提交表单之前显示 MVC3 [必需] 验证消息
【发布时间】:2012-08-28 18:12:38
【问题描述】:

我有一个具有数字和字符串属性的模型,每个属性都有 [Required] 验证注释。我也有一个相应的视图,它是这个模型的输入表单。出于某种原因,一旦加载视图,字符串属性所需的验证消息就会立即显示,而数字属性所需的验证消息仅在用户尝试提交表单时才显示(如预期的那样)。有人知道字符串属性上的奇怪验证行为吗?

更新

我将问题缩小到从控制器操作显示视图的“复杂”方式。在我的例子中,我有一个控制器操作 Create,负责创建一个具有许多属性的实体。由于实体具有许多属性,因此我通过服务器端向导将此过程拆分为多个步骤。以下是我的控制器操作的简化版本:

public ActionResult Create()
    {
        Model = new CreateEditListingViewModel();
        return View("StepOne");
    }

    [HttpPost]
    public ActionResult Create(string buttonValue, StepOneViewModel stepOneModel, StepTwoViewModel stepTwoModel, StepThreeViewModel stepThreeModel)
    {
        ActionResult nextView = null;
        CreateListingSteps step = (CreateListingSteps)Enum.Parse(typeof(CreateListingSteps), buttonValue);
        // Save the value of the step that has been submitted and redirect user to next step
        switch (step)
        {
            case CreateListingSteps.StepOne:
                Model.StepOne = stepOneModel;
                nextView = View("StepTwo");
                break;
            case CreateListingSteps.StepTwo:
                Model.StepTwo = stepTwoModel;
                nextView = View("StepThree");
                break;
            case CreateListingSteps.StepThree:
                Model.StepThree = stepThreeModel;
                nextView = View("Confirm");
                break;
        }
        return nextView;
    }

显然发生的情况是,一旦用户第一次单击“下一步”按钮(在所有步骤视图中都可用),就会为所有后续表单触发验证,因此即使用户没有提交,也会不希望地将字符串字段显示为无效表格呢。

谁能想到一个解决方法?

【问题讨论】:

  • 您是否已将您的字符串字段初始化为非空值?
  • 你有绑定到各自input的javascript吗?
  • @AndreCalil 否。我尝试更改模型和视图中的属性名称,以防万一有一些我不知道的 javascript 绑定,但它仍然不起作用。跨度>
  • 你能发布你的模型并查看代码吗?

标签: c# asp.net-mvc-3 razor validation


【解决方案1】:

我解决了。我只需要在返回新视图之前调用ModelState.Clear()

【讨论】:

    【解决方案2】:

    尝试使用String.Empty 初始化您的字符串。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-28
      • 2023-03-12
      • 2020-01-22
      • 2021-07-28
      • 2015-08-04
      • 1970-01-01
      • 1970-01-01
      • 2014-12-19
      相关资源
      最近更新 更多