所有的第一一些上下文

我有一个表格,其中,I后回一些对象由MVCS内置ModelBinder的自动物化为对象:

<input type="hidden" name="myobj[0].Id" />
<input type="text" name="myobj[0].Hours" />
<input type="hidden" name="myobj[1].Id" />
<input type="text" name="myobj[1].Hours" />

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Save(IList<MyObject> myobj);

此外:我想强调,我们要发布帖子的DTO(DataTransferObjects),我们进一步的路线图到实体框架的实体,所以我们宁愿不喜欢,除了可能添加属性的DTO的改变任何

<强>问题

如果用户输入用于“小时”的无效值,说“FUBAR”,则ModelBinder的自然不会尝试设置“Hours'属性。但它的默认值为0,因为它是一个的 INT 而非一个的字符串

这会导致一些困难,我ofcourse,因为现在我不能看到,如果用户实际输入0,或者如果这是由无效输入引起的。

由于我使用的是家庭轧对象到实体(实体框架)映射器,我们不能改变“Hours'属性的足迹为 INT?。我知道MVC有内建的验证,但我们宁愿不执行,既然我们知道它已经被疯狂的攻击,并且有在ASP.NET MVC未来一些新的验证2.0。

<强>解决方案吗

我需要能够指出哪个字段是不正确的用户,从而使装置I不知何故需要能够捕捉异常(或可能地一些其他巧妙的解决方案?),其中I可以做一些逻辑和交回一个新的视图到所述用户,其中,我澄清他们做了什么错误。

我当前的IDEA:编写自定义模型绑定器

你有什么建议?

有帮助吗?

解决方案

  

这会导致一些困难,我ofcourse,因为现在我不能看到,如果用户实际输入0,或者如果这是由无效输入引起的。

当然可以。期待中的ModelState中。

其他提示

虽然这不是特别理想,你说,你不想改变任何东西。所以你提到的选项,创建自定义的模型绑定器将正常工作。但是,你可能会发现自己为每个实体创建一个模型绑定器要绑定。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top