- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在从书中学习 ASP.NET MVC Pro ASP.NET MVC 4 (顺便说一下,到目前为止我喜欢它)。
我还在开始章节,它向我展示了 System.ComponentModel.DataAnnotations
命名空间属性,如何用这些注释散布我的模型类,然后如何使用它们来检查模型是否有效(ModelState.IsValid
中的 Controller
)。
例如:
public class GuestResponse
{
[Required(ErrorMessage = "Please enter your name"]
public string Name { get; set; }
}
...
public ViewResult RsvpForm(GuestResponse guestResponse)
{
if(ModelState.IsValid)
{
return View("Thanks", guestResponse);
}
}
ErrorMessage
验证属性的参数有点View
有关的?类似的东西不属于 UI
层?例如...如果由于空间限制,我希望移动版本不是说“请输入您的姓名”而是说“需要姓名”怎么办?但它在我的模型中! ModelState.IsValid
确定模型的状态?模型不应该告诉我吗?我明白 ModelState
正在使用 DataAnnotations
我的模型中的属性,但这似乎只适用于非常简单的模型。更复杂的模型甚至可能没有有效/无效状态,它可能只有不同的阶段和状态。我在这里有点漫不经心,但我不喜欢声明性地说明是什么使我的模型有效或无效的想法。 最佳答案
以下是我对您问题的回答:
1) Why do I want a bunch of attributes littered throughout my domain model? I like my domain model pure and free from any stuff that is implementation specific, and any real world model would be too complex to just use declarative validation like this.
AutoMapper
.基本的经验法则是 View 不应该知道您的域模型。
2) Aren't the ErrorMessage parameters of the validation attributes somewhat View related? Doesn't something like that belong in the UI layer? For example...what if due to space constraints I want the mobile version to instead of saying "Please enter your name" say "Name required"? But here it is in my model!
3) Why do I want to use ModelState.IsValid to determine the status of the model? Shouldn't the model tell me? I understand that ModelState is making use of the DataAnnotations attributes that are in my model, but this seems like it would only work for very simple models. A more complex model might not even have a valid/invalid state, it might just have various stages and states. I'm sort of rambling here, but I don't like the idea of declaratively saying what makes my model valid or invalid.
FluentValidation.NET
.它为您提供了一种非常漂亮流畅的语法来表达任意复杂的验证规则,它
integrates easily with ASP.NET MVC
并允许
unit test your validation rules
完全隔离。
关于asp.net-mvc-4 - Asp.NET MVC - DataAnnotations 和 ModelState.IsValid 对域模型的侵入性太强?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20812448/
我的 Controller 代码如下: [HttpPost] public ActionResult Create(ExampleViewModel model) { model.User.R
我正在开发 MVC5 代码优先应用程序。 在一个模型的 Edit() View 中,我包含了 [Create] 按钮,用于从 Edit() 中向其他模型添加新值> 查看并在 Edit() 上的 Dro
我的 MVC 应用程序中有一个问题,我不确定如何解决,或者我是否以错误的方式解决了这个问题。 我有一个 Controller / View ,它在带有复选框的网格中显示项目列表,当项目发布到我的 Co
我想知道是否可以自动将错误添加到 ModelState,以便检查我的 else 条件? if (ModelState.IsValid) { //Do something } else {
我有一个带有必需属性的模型对象 public class ApiPing { [Required] public DateTime ClientTime { get; set; }
如何测试 Controller.ViewData.ModelState?我宁愿在没有任何模拟框架的情况下这样做。 最佳答案 当然,如果您对数据使用存储库模式,则不必使用 Mock。 一些例子: htt
我正在使用 ASP.NET-MVC Core 2.1,我的代码中有这个 ViewModel 类 public class HomeViewModel { public
我有一个非常简单的 MVC 2 表单。它有两个下拉菜单,用户和角色。无论我选择什么,员工下拉列表都会通过验证,而角色下拉列表不会通过验证。尽管我计划实现一个,但没有默认的“空”选项,这就是为什么我需要
例如,有一个 Web Api 操作方法: public HttpMessageResponse Post(UserDto userDto) { if (!this.ModelState.IsV
如果我有以下模型: public class Model { public int ModelID { get; set; } public string Title { get; s
我的 DropDownLists 有一些问题,因为当我发布信息并且我的模型无效时,它返回“空”到页面触发错误,就像 this question . 我已经使用那里提出的解决方案,它解决了我的问题。无论
我的 DropDownLists 有一些问题,因为当我发布信息并且我的模型无效时,它返回“空”到页面触发错误,就像 this question . 我已经使用那里提出的解决方案,它解决了我的问题。无论
我想从 html 页面上的 dropdownList 获取参数并将其发送到我的 Controller ,创建新的模型对象,并将其插入数据库。 这是我的 Controller (创建 My_Model
我几乎总是想在回发时检查 ModelSate.IsValid 是否被调用。而且必须在每次回发开始时进行检查违反了 DRY 原则,有没有办法让它自动检查? 例子: [HttpPost("Register
我的模型类如下: public class PostInputViewModel { [Required] [MinLength(1)] [Ma
如何在 WEB Api .net 框架中将模型状态键设置为驼峰式大小写。 我使用 JsonProperty 特性将属性名称设置为驼峰式大小写。现在我希望 modelstate 与 json(驼峰式)相
所以,我有一个我很好奇的问题。我有一个 UserAccountViewModel,我正在重复使用它来创建帐户 View 和编辑帐户 View 。这样我就可以为我的代码使用一个 View 和一个 Vie
我正在编写一个 MVC 应用程序,其中包含一个对其进行验证的表单。 当我查询错误时,像这样: foreach (ModelState modelState in ViewData.ModelState
使用 MVC 时,当属性级别出现错误时,我们可以将错误添加到 ModelState但同样的错误也被添加到摘要中。我们如何避免显示它两次。 我只想在消息摘要中显示公共(public)错误,而在属性级别显
我有以下代码: public class EventController : ApiController { public IHttpActionResult Post(List Events
我是一名优秀的程序员,十分优秀!