Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果(ModelState.IsValid)不适用于FormsCollection。用什么代替?

如果(ModelState.IsValid)不适用于FormsCollection。用什么代替?
EN

Stack Overflow用户
提问于 2011-06-10 02:01:42
回答 1查看 1.9K关注 0票数 1

要验证绑定到具体类型的HttpPost操作,我可以使用ModelState.IsValid

代码语言:javascript
运行
AI代码解释
复制
    public ActionResult Create(MyModelType myModel)
    {
        if(ModelState.IsValid)
        {
            // Do some stuff
            return RedirectToAction("Details", 0);
        }
        else
        {
            return View();
        }
    }

这显然不适用于FormCollection,因为没有需要验证的模型。

代码语言:javascript
运行
AI代码解释
复制
    public ActionResult Create(FormCollection collection)
    {
        if(ModelState.IsValid) // Never invalid
        {

当操作接受一个ModelState.IsValid时,应该用什么代替FormCollection

万分抱歉,我知道这是个愚蠢的问题

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-06-10 02:14:32

这很正常。你需要UpdateModel

代码语言:javascript
运行
AI代码解释
复制
public ActionResult Create()
{
    var model = new MyModelType();
    UpdateModel(model);
    if(ModelState.IsValid) 
    {
        ...
    }
    ...
}

在第一种情况下,调用默认的模型绑定是因为它需要从请求绑定模型。然后,这个默认的模型绑定将基于您的数据注释规则执行验证。在第二种情况下,你什么也不做。控制器操作不了解您的模型及其用于验证的数据注释。因此,模型状态将始终有效,因为没有任何东西会使其无效。

尽管如此,你应该始终使用第一种方法。FormCollection是没用的。即使您使用第二种方法(我完全不推荐这种方法),但您可以看到,您不需要任何FormCollection。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6304822

复制
相关文章

相似问题

如果没有回收物品,用什么代替RecyclerView?

22

MVC FormsCollection

11

用#代替?用于URL参数

15

ModelState.IsValid适用于“新”表单,但不适用于“编辑”表单

23

用什么代替createSuggestBox()?

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档