【问题标题】:asp.net mvc2 validation acting different on two serversasp.net mvc2 验证在两台服务器上的作用不同
【发布时间】:2010-11-29 10:31:45
【问题描述】:

我有一个问题,我不知道哪个结果是正确的。

我获得了两种不同的场景,具体取决于我从哪里运行应用程序 - 本地(调试模式)/开发(在单独的服务器上)。

我在两个 .aspx 页面上有一个视图模型 ConsultationViewModel(我想记住两个表单之间的数据)。

表格 1 两个对象(字符串) - 一个 [必需]

表格 2 两个对象(字符串) - 两个 [必需]

这里是我获得不同场景的地方:

• 本地主机:表格 1 – 表格 2 = 无验证错误 • 开发:表格 1-表格 2 = 验证错误

表格一

public string Rate { get; set; }

[Required(ErrorMessage = "You must enter your comments")]
public string Comments { get; set; }

表格 2

[Required(ErrorMessage = "Please select a option")]
public string WhatAreYou { get; set; }

[Required(ErrorMessage = "Please select a option")]
public string EthnicOrigin { get; set; }

为什么在开发服务器上需要验证 WhatAreYou/EthinicOrigin 这些实际上从未在 Form 2 上使用过?

    [HttpGet]
    public ActionResult Index()
    {
        ConsultationHolderViewModel consultationViewModel = new ConsultationViewModel();
        return View(consultationViewModel);
    }

    [HttpPost]
    public ActionResult Index(ConsultationViewModel consultationViewModel)
    {
        if (!ModelState.IsValid)
        {
            return View(consultationViewModel);
        }

        return View("Equalities", consultationViewModel);
    }

    [HttpPost]
    public ActionResult Equalities(ConsultationViewModel consultationViewModel)
    {
        if (!ModelState.IsValid)
        {
            return View(consultationViewModel);
        }

        switch (consultationViewModel.Button)
        {
            case "Back":
                return View("Index", consultationViewModel);
            case "Continue":
                return View("Receipt", consultationViewModel);
        }

        return View("Equalities", consultationViewModel);
    }

提前感谢您的帮助,

克莱尔

【问题讨论】:

    标签: asp.net asp.net-mvc validation viewmodel


    【解决方案1】:

    我敢打赌它与默认的 mvc2 模型绑定有关。它验证所有模型属性。

    因此,如果您的模型有它们,即使您不发布它们甚至不需要它们 - 您仍然会收到验证错误。

    【讨论】:

    • 我在 ModelState.IsValid 之前手动填充了必填字段,它仍然显示错误消息:consultationViewModel.WhatAreYou = "A"; / 咨询ViewModel.EthnicOrigin = "A";为什么会这样做?因为两个字符串都包含数据
    • 好吧,我想在您的操作方法被调用时它已经无效了。您可能想在视图中添加那些缺少的字段 asd HiddenFor() .. 并完成它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-23
    • 1970-01-01
    相关资源
    最近更新 更多