在 MVC 中提交表单时更改字段值的最佳做法是什么?

本文关键字:最佳 是什么 字段 MVC 提交 表单 | 更新日期: 2023-09-27 18:36:53

我的View中有很多字段被jquery MaskedInput掩盖了。它们被屏蔽是因为用户需要使用掩码查看它,但我需要在提交数据库中的值之前删除这些掩码。

我不想弄乱代码,因为这是我项目中最重要的Views之一。

那么,这样做

的最佳做法是什么?

假设我有这个Model

public class MyViewModel {
    public string MyMaskedProperty { get; set;}
}

而这段代码View

@Html.TextboxFor(x=> x.MyMaskedProperty, new { @class="myMask"} )

我应该:

  1. 在表单被模仿之前,使用 javascript 删除我View上的掩码
  2. 删除我Model上的掩码,更改MyMaskedPropertyget以返回未屏蔽的值
  3. 取下我Controller上的面具,因为它只需要从这里和其他地方解开面具
  4. 比上述 3 种解决方案更好的东西。

提前感谢!

在 MVC 中提交表单时更改字段值的最佳做法是什么?

第二个选项类似,您可以简单地向视图模型添加一个只读字段:

public class MyViewModel {
    public string MyMaskedProperty { get; set;}
    public string MyUnmaskedProperty
    {
        get
        {
            // return an "unmasked" version of MyMaskedProperty
        }
    }
}

即使你要用 JavaScript 修改值,你也不能真正隐式地信任它,并且无论如何都希望验证服务器端。 在控制器中执行此操作并不理想,因为这只是需要到处重复的过程代码。 遵循"保持控制器轻量级,模型重磅"的建议,此逻辑确实属于模型。

模型本身实际上可以从任何版本的数据构建。 只要用于构造模型的信息可以有效地构造它,那么模型就可以公开各种操作和属性来操作和查看该信息。