gpt4 book ai didi

c# - MVC3 [Required] 验证消息显示在表单提交之前

转载 作者:行者123 更新时间:2023-12-02 17:48:01 25 4
gpt4 key购买 nike

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

更新

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

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;
}

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

Blank form that hasn't been submitted showing required message for description field.  Price appears regularly because its data type is not string

有人能想出解决办法吗?

最佳答案

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

关于c# - MVC3 [Required] 验证消息显示在表单提交之前,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12165085/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com