【问题标题】:2 input but validate only one2 个输入但仅验证一个
【发布时间】:2013-08-12 07:36:04
【问题描述】:

你能帮我解决这个问题吗? 假设我有一个表格,其中包含一些东西(例如产品)的表格,可以添加新产品和编辑现有产品。要求是添加行始终可见。当我点击“编辑”产品时遇到问题,所以我有两个输入(一个用于编辑,一个用于添加)。当我通过选择保存可编辑行将表单发布到服务器时,我只想验证编辑行并且对添加行不做任何事情(有一段时间是空的)。

问题是我的添加行输入应用了默认 MVC 验证,其控件变为红色,并且出现属性验证消息。我不想看到它们,因为它真的很混乱。其实我不明白为什么会这样。可能是因为 MVC 无法将空字符串转换为 DECIMAL(输入引用的 VIEWMODEL 中的类型)

【问题讨论】:

  • 请给我们一些代码好吗?模型、控制器编辑动作和视图会很好。但是如果问题发生在服务器端,那么突然尝试this
  • 您可以: - 使用 JScript (JQuery) 使用现有信息完成添加文本框(因此添加变为编辑)。那么默认验证仍然有效。 - 禁用默认验证并实现自定义 JS 以在浏览器端进行验证。无论哪种方式,请记住还要在服务器端(控制器)上进行验证。
  • 很难理解你想要达到的目标。请发布一些代码。

标签: c# asp.net-mvc validation


【解决方案1】:

您需要两种不同的表单,一种用于添加项目,另一种用于编辑项目。这些需要指向不同的操作,然后这些操作将只验证一个对象。

我不确定您的代码是什么样的,但我真的建议您使用以下代码,您的视图完全分开:

从显示所有“产品”或任何数据的视图开始。当您在视图中填充此内容时,您可以将Edit 链接分配给每个单独的链接。您只需要一个整体Add Project 链接。像这样:

@Html.ActionLink("Add Project", "AddProjectView")
For Each project In Model.Projects
    @Html.ActionLink("Edit", "EditView", New With {.id = project.ProjectID})
    @<div>PropertyName: @Project.Property</div>
Next

现在您可以将Edit 视图与数据视图分开,它可以自行处理验证。同样,Add Project 视图被分离并处理自己的验证。成功添加或编辑后,您只需将用户重定向回您的上述视图即可显示和更新您的数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-17
    • 1970-01-01
    • 1970-01-01
    • 2016-12-17
    • 2018-04-22
    • 1970-01-01
    • 2018-03-20
    • 1970-01-01
    相关资源
    最近更新 更多