ModelState 始终有效

2023-12-31

我有一些看似非常简单的东西不起作用。

我有一个模型

public class Name: Entity
{
    [StringLength(10), Required]
    public virtual string Title { get; set; }
}

public class Customer: Entity
{
    public virtual Name Name { get; set; }
}

视图模型

public class CustomerViweModel
{
    public Customer Customer { get; set; }
}

a view

       <% using(Html.BeginForm()) { %>
                    <%= Html.LabelFor(m => m.Customer.Name.Title)%>
                    <%= Html.TextBoxFor(m => m.Customer.Name.Title)%> 
                    <button type="submit">Submit</button>
        <% } %>

和一个控制器

[HttpPost]
public ActionResult Index([Bind(Prefix = "Customer")] Customer customer)
{
      if(ModelState.IsValid)
           Save
       else
           return View();
 }

无论我输入什么作为标题(空或大于 10 个字符的字符串),ModelState.IsValid 始终为 true。 Customer 对象中的 Title 字段有一个值,因此数据正在传递,但没有经过验证?

有什么线索吗?


在您的视图中,我没有看到任何文本框或允许将数据发送到控制器的字段,只有一个标签。属性将如果未发布,则不会被验证 http://bradwilson.typepad.com/blog/2010/01/input-validation-vs-model-validation-in-aspnet-mvc.html。添加一个文本框,将其留空,您的模型将不再有效:

<%= Html.TextBoxFor(m => m.Customer.Name.Title)%>

UPDATE:

这是我使用过的代码:

Model:

public class Name
{
    [StringLength(10), Required]
    public virtual string Title { get; set; }
}

public class Customer
{
    public virtual Name Name { get; set; }
}

public class CustomerViewModel
{
    public Customer Customer { get; set; }
}

控制器:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View();
    }

    [HttpPost]
    public ActionResult Index([Bind(Prefix = "Customer")]Customer cs)
    {
        return View(new CustomerViewModel
        {
            Customer = cs
        });
    }
}

View:

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<MyApp.Models.CustomerViewModel>" %>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
    <% using(Html.BeginForm()) { %>
        <%= Html.LabelFor(m => m.Customer.Name.Title)%>
        <%= Html.TextBoxFor(m => m.Customer.Name.Title)%> 
        <button type="submit">Submit</button>
    <% } %>
</asp:Content>

当您提交此表单时,会显示验证错误。

备注1:我省略了Entity模型中的基类,因为我不知道它看起来如何。

备注2:我已将 Index 操作中的变量重命名为cs。我记得在 ASP.NET MVC 1.0 中,当前缀和变量命名相同时,会出现一些问题,但我不确定这是否适用于此,我认为它已修复。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ModelState 始终有效 的相关文章

  • 验证属性被触发两次

    在我的 MVC3 应用程序中 我有模型 未删除重要属性 public class AccountViewModel StringLength 65 public string Property1 get set StringLength 6
  • 锁定 ASP.NET 应用程序变量

    我在 ASP NET 应用程序中使用第三方 Web 服务 对第 3 方 Web 服务的调用必须同步 但 ASP NET 显然是多线程的 并且可能会发出多个页面请求 从而导致对第 3 方 Web 服务的同时调用 对 Web 服务的调用封装在自
  • 将下拉列表与字典绑定

    我将字典绑定到下拉列表 举例来说 我的字典中有以下项目 Test1 123 Test2 321 我希望下拉文本采用以下格式 Test1 Count 123 Test2 Count 321 我沿着以下路径走 但没有运气 MyDropDown
  • 无法为 wsdl 文件创建服务引用

    I have wsdl文件和xsd我本地机器上的文件 我想在项目中添加服务引用 我没有网络服务 我只有wsdl file 我收到以下错误 The document was understood but it could not be pro
  • 需要一个好的 ASP.NET 菜单

    我正在寻找一个可以在 ASP NET 中使用的好菜单 我目前使用的是asp菜单 我需要 它可以在 IE 6 7 8 Firefox 和 Safari 中运行 我还需要它不要给页面客户端增加大量开销 我需要能够从数据库加载它 编写您自己的服务
  • Blazor WeatherForecast 示例如何工作?

    Blazor 的 Hello World 项目模板包括天气预报示例 除了计数器增量示例之外 我用这个来看看幕后发生了什么 我似乎无法弄清楚 基本上 如果我注释掉获取天气 json 数据的代码行 那么我会无限期地看到 正在加载 到目前为止是有
  • asp.net datalist 选择每个类别的所有复选框

    我有一个页面 用户可以在数据列表控件中选择不同的文档文件 使用预渲染事件处理程序根据类别对文档进行分类 文档是根据复选框控件 而不是复选框列表 选择的 到目前为止 一切都很好 接下来我想要发生的事情是在每个类别名称旁边放置一个 全选 复选框
  • 无法加载文件或程序集“System.Web.Razor”或其依赖项之一

    我在我的网站 Web 应用程序 中使用了 Umbraco 4 11 6 我的网站在 localhost 中工作 通过 Visual Studio 2012 和 IIS v7 进行测试 但是当我从互联网空间运行它时 出现错误 错误是 无法加载
  • 使用来自另一个 ASP.NET 应用程序的 DNN 身份验证和授权信息

    我有一个 ASP NET Web 应用程序 K 它有自己的基于 SimpleMembershipProvider 的身份验证和授权 现在我想建立一个具有应用程序 K 和 DNN 的网站 用户将登录到 DNN 应用程序 并且我在 DNN 应用
  • 如何找出 ModelState 的哪个键有错误

    当 ModelState IsValid 为 false 时 如何确定 ModelState 中的哪些键包含错误 通常我只需将鼠标悬停在 ModelState Values 列表中 逐项检查错误计数 gt 0 但现在我正在处理一个包含一些复
  • 使用 jquery ajax 和 asp.net 处理程序上传文件

    我正在努力让它工作 但我在上传文件时遇到错误 ASPX
  • ASP.NET 登录页面

    我想在我的网站上为注册用户添加登录信息 我该如何进行呢 是通过使用session吗 一旦注销发生 Session 变量会发生什么 您的问题非常广泛 有许多不同的方法可以实现 ASP NET 网站的 会员 系统 我建议您首先阅读 会员简介 h
  • 在 Visual Studio 2019 中安装 OData v4 客户端代码生成器

    我制作了一个 OData 服务 我想制作一个客户端程序来调用该服务 我想使用 OData v4 客户端代码生成器 但无法在 Visual Studio 2019 中安装它 只能在 vs2017 中安装 在vs2019中如何安装 由于 Rah
  • 聚合物在核心输入上使用功能验证

    有人可以解释一下如何使用函数验证吗这种聚合物元素 http www polymer project org docs elements core elements html core input 导航到 验证 部分
  • CakePHP 中没有模型的简单表单

    我正在尝试在产品页面中添加请求附加信息的表单 这是一个简单的表格 包含姓名 国家 地区 电子邮件和问题字段 我创立了这个tutorial http snook ca archives cakephp contact form cakephp
  • zend 表单验证

    我想知道 Zend Form 如何验证输入 我的意思是它如何知道要验证哪些输入字段 我查看了 php 全局变量 POST GET 但没有看到任何设置为标识符 例如 的内容 以便了解如何验证 有人能给我推荐一些关于这些东西的指南吗 好吧 找出
  • CSS 样式在部分回发时停止工作

    在 ASP net C 应用程序中 我有一个带有自定义 css 的复选框 CSS 文件是 复选框
  • C# 静态类型不能用作参数

    public static void SendEmail String from String To String Subject String HTML String AttachmentPath null String Attachme
  • 如何检查用户电子邮件的唯一性并将结果传递给 jQuery?

    我有这个问题 我正在控制器中检查用户电子邮件并发送 json 成功响应 如果已获取 并添加输入的 css 样式 我还需要阻止提交并添加一些消息 这是我的检查电子邮件操作 使用本文 http paydrotalks com posts 45
  • JWT - 配置授权服务器并将颁发者设置为其本身

    我正在尝试按照本指南设置授权服务器 http bitoftech net 2014 10 27 json web token asp net web api 2 jwt owin authorization server http bito

随机推荐

  • PATH 中的其他脚本

    我尝试使用 Homebrew 在 OS X 10 7 5 上安装 Rails 并继续收到以下警告 我已经尝试了很多次更改 PATH 以排除 Python 目录 修改 bash profile 但我什至不确定这就是导致警告的原因 如果这是严重
  • 自定义验证器触发但它不会更新 ValidationSummary

    您好 我正在开发一个自定义表单字段验证器 似乎自定义验证器正在工作 不允许它继续到下一页 但它不会更新验证摘要 也不会显示我的星号和标签 已经变得可见 我在同一字段上还有其他验证器 例如RequiredFieldValidator 我的 V
  • 沉默樱桃

    我有一个cherrypy 服务器将xml 文件分发到网页 当我的服务器运行时 cherrypy 会为已请求的每个网页提供日志 并注明时间戳和网址 对于典型使用来说 这是一个相当不错的功能 但是当请求达到每秒超 过 10 个请求时 日志可能会
  • 推后选项卡消失 ionic 3

    我的标签在使用后消失this navCtrl push NamePage 看不懂 需要使用 ViewChild或者其他功能 我已经设定tabsHideOnSubPages on false in 应用程序模块 ts 例子 https git
  • jinja2 从模板加载模板文件

    有没有办法可以从另一个模板文件中加载 jinja2 模板 就像是 render template path to file html 我有一些想要重用的片段 因此拥有此功能对我来说很重要 include file 做这个 请参阅jinja2
  • Jupyter 密码未经过哈希处理

    当我尝试设置 jupyter 笔记本密码时 打开 jupyter notebook config json 文件时没有获得密码哈希 这是 json 文件的输出 NotebookApp password argon2 argon2id v 1
  • 在不同网站应用程序之间共享 ASP.NET .ascx 控件的最佳方式?

    假设 IIS 中有 2 个不同的 ASP NET 应用程序 此外 您还希望在这两个应用程序之间共享一些 ASCX 控件 创建 用户控件库 的最佳方法是什么 以便您可以在两个应用程序中使用相同的控件实现 而不必重复代码 控件有 ASCX 后面
  • ASP.NET Web API 记录入站请求内容

    我正在尝试注销 Web API 请求内容 即 json 字符串 我实现了一个 ITraceWriter 类 example http www asp net web api overview testing and debugging tr
  • 如何在单个 ssh 命令中使用 bash $(awk)?

    我正在尝试执行一个命令ssh包含首先执行的 子代码 或 子代码 我一直使用它 但我不知道其正式名称 但在目标服务器上 为了便于讨论 假设这是我要使用的命令 当然这可以通过hostname 但这只是一个简化的示例 其中包含我想要使用的所有格式
  • 如何评估gcc格式-溢出检查大小72

    我的示例代码 t c include
  • Firebase 推送通知不适用于 TestFlight/adHoc 版本

    我开发了一个带有推送通知的应用程序 我将其上传到 AppStore 一切正常 通知确实到达了 我现在已经更新了应用程序 以便在用户点击通知时打开网址 在调试模式下使用通过电缆连接的设备进行测试时 一切正常 问题是 如果我通过 TestFli
  • Android - 卸载时删除 SD 卡上的文件

    我的应用程序在安装时从服务器下载一些多媒体文件 我这样做是为了节省应用程序的大小空间 但是 这种方法的缺点是 当卸载应用程序时 它不会删除这些文件 我看过报道说这是可能的 但我似乎无法让它发挥作用 有没有办法在卸载时执行此操作 或者我应该忘
  • C# - 装箱/拆箱/类型转换整数问题。我不明白

    我很难理解这一点 考虑以下示例 protected void Page Load object sender EventArgs e No surprise that this works Int16 firstTest Convert T
  • 如何在反应本机中获取文件夹大小和长度

    如何获取文件夹大小和文件夹中文件的数量 我尝试使用react native fs readDir let pat2 RNFS DocumentDirectoryPath myFolder RNFS readDir pat2 then res
  • 洪水填充算法 - 忽略边缘

    到目前为止 我已经实现了洪水填充算法 我想调整它 这样它就可以去掉边缘 为了演示这一点 我上传了一张图片 图1是我要修改的图像 图 3 是我的算法应该做的事情 图2是我当前的结果 所以在这种情况下 targetColor 是白色 repla
  • 如何限制APK不从“Android设备”卸载[重复]

    这个问题在这里已经有答案了 我已经开发了 Android 应用程序 甚至安装到了设备中 但是如何防止应用程序 apk不被设备的其他人 用户卸载 问候 阿南德 你不能
  • Magento 自定义模块:如何创建管理菜单

    Finder Setting 从管理菜单设置转到自定义模块的系统 配置的 url 应该是什么 menu menu
  • Vue i18n - 使用 routerview 将语言环境添加到 URL

    我正在使用带有 Vue JS 和 TypeScript 的脚手架 Asp Net Core 2 1 网站 我正在尝试整合kazupon i18n http kazupon github io 带有路由器视图的插件 如果没有 URL 集成 它
  • 在 JavaScript 中将日期时间字符串转换为 UTC

    我们如何在 JavaScript 中将日期时间字符串转换为 UTC 我们从 REST 服务获取以下 JSON CreationTime June 2 2015 8 04 53 PM IST category UI severity MAJO
  • ModelState 始终有效

    我有一些看似非常简单的东西不起作用 我有一个模型 public class Name Entity StringLength 10 Required public virtual string Title get set public cl