【问题标题】:Html.ValidationMessageFor( MyKey ) without being tiedto a model's attribute?Html.ValidationMessageFor( MyKey ) 没有绑定到模型的属性?
【发布时间】:2016-05-03 12:56:28
【问题描述】:

我的模型并不真正代表我的表单发布的内容。示例包含组织的组织模型帮助我生成树视图,用户选择组织树的多个节点并提交表单。该表单发布一个数组 [] 或组织 ID。

(也许我做错了,请让我知道尝试绑定到模型,这在处理树网格等以及使用部分视图和 ajax 返回部分视图和编辑器等时令人困惑。默认模型绑定是没用)

回到我的观点,因为我想验证是否有任何组织被选中:

if (SelectedOrgs == null) //array[]
{
    ModelState.AddModelError("OrgsNotSelected",IValidationErrors.OrgsNotSelected);
}

我的问题是如何检索我刚刚从我的视图中组成的这个随机密钥?我的模型甚至我的视图模型都没有可供选择的数组,这只是帖子的结果。

我不确定如何在视图中获取“OrgsNotSelected”的值。

谢谢! 比拉尔

【问题讨论】:

  • 为什么不使用资源文件,而只是将一个空键传递给模型状态错误...类似于:ModelState.AddModelError(string.Empty, Resource.CustomError);
  • 看来我的问题与 Ajax 有关,我找到了一种从我的视图中获取值的方法,但由于我使用 Ajax,我无法直接在我的页面中显示错误。跨度>

标签: asp.net-mvc model-view-controller modelstate asp.net-mvc-validation asp.net-mvc-ajax


【解决方案1】:

如果您对控制器执行正常的提交操作,则需要使用 ValidationSummary 来显示未附加到特定属性的错误。

当您使用 Ajax 时,最好从您的控制器返回一个 json 结果,您可以对其进行定义,以便它以您可以在成功函数中用于显示消息的格式包含您的错误。

【讨论】:

  • 谢谢史蒂夫。这正是我现在正在测试的。我将我的验证消息添加到我传递给帮助器方法的模型状态,该方法将 json 对象返回给我,并将 Json 传递回视图。但是,由于我的模型状态有错误,我使用的是(不是成功)我的 ajax 表单的一部分,而是 onError,这有意义吗?我应该在 Success 上使用吗?我想我可以完全避免模型状态,这样 json 对象可以确定我在视图中是否有错误?
  • 您的 ajax 只有在无法从您的控制器获得响应时才会执行错误函数。您应该使用success函数并从您的json数据中识别它是否是错误的。
猜你喜欢
  • 2012-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多