【问题标题】:Validating a List<string> in ASP.NET MVC 3在 ASP.NET MVC 3 中验证 List<string>
【发布时间】:2012-01-03 11:53:15
【问题描述】:

我有一个“联系我们”页面,其中有一个问题和答案列表,如下所示:

public List<string> Questions = new List<string>()
                                    {
                                        "What browser are you using?",
                                        "What version of the browser are you using?",
                                        "And so on and so forth..."
                                    };

public List<string> Answers { get; set; }

然后我将这些添加到视图中,如下所示:

           @foreach (var question in Model.Questions)
            {
                <dt>
                    <dd width="240" height="25">@Html.Label(question)</dd>

                    <dd width="240" height="80">
                        @Html.ValidationMessageFor(model => model.Answers[Model.Index])
                        @Html.TextAreaFor(model => model.Answers[Model.Index], new { @class = "uniform", @id = "text" })
                      </dd>
                </dt>
                Model.Index += 1;
            }

在我开始编写自定义验证器之前,有没有一种方法可以验证该答案列表中的每个字符串,类似于验证字符串字段的方式?:

[StringLength(100)]

提前致谢!!

【问题讨论】:

  • 你要验证什么?
  • 我不确定你这么挑剔是否公平 - 如果你看看我的历史......每当我提出一个尚未回答的问题或答案不正确时,我都会关注为了社区的利益,回答我自己的问题。
  • @Dallas - 我正在尝试验证响应的长度,以确保它们没有输入太大的值。

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


【解决方案1】:

您的问题列表应该是包含在“联系我们”页面模型中的另一个模型,以便您可以将这些属性分配给该模型。 这样,您将获得每个项目的验证。

另一种选择是简单地检查控制器代码中的长度(当然这里没有客户端验证)并在验证失败时使用 ModelState.AddError() 手动添加错误。

第三种选择(再次是服务器端)是在模型中实现 IValidateableObject 以手动检查这些值。

【讨论】:

  • 我确实意识到了后两个选项,但是在我费心重新发明轮子之前,我正在尝试使用现有的客户端功能。我在一个由 20 名开发人员组成的团队中,所以我不想引入额外的混乱。关于如何将我的答案/问题列表移动到另一个模型,我不清楚第一个选项。您是否建议我根本不使用列表?我确实尝试创建一个新类(并更改视图中的相应循环),该类包含一个字符串字段并将 [StringLength] 属性设置为 [StringLength(100)]...但验证在这种情况下不起作用。跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-02-05
  • 2017-12-15
  • 2011-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多