繁体   English   中英

MVC3 [必填]验证消息,显示在提交表单之前

[英]MVC3 [Required] validation message showing prior to form submission

我有一个具有数字和字符串属性的模型,每个属性都有[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;
    }

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

尚未提交的空白表格显示了说明字段所需的消息。价格定期出现,因为其数据类型不是字符串

谁能想到解决方法?

我解决了 我需要做的就是在返回新视图之前调用ModelState.Clear()

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM