在 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"} )
我应该:
- 在表单被模仿之前,使用 javascript 删除我
View
上的掩码 - 删除我
Model
上的掩码,更改MyMaskedProperty
的get
以返回未屏蔽的值 - 取下我
Controller
上的面具,因为它只需要从这里和其他地方解开面具 - 比上述 3 种解决方案更好的东西。
提前感谢!
与第二个选项类似,您可以简单地向视图模型添加一个只读字段:
public class MyViewModel {
public string MyMaskedProperty { get; set;}
public string MyUnmaskedProperty
{
get
{
// return an "unmasked" version of MyMaskedProperty
}
}
}
即使你要用 JavaScript 修改值,你也不能真正隐式地信任它,并且无论如何都希望验证服务器端。 在控制器中执行此操作并不理想,因为这只是需要到处重复的过程代码。 遵循"保持控制器轻量级,模型重磅"的建议,此逻辑确实属于模型。
模型本身实际上可以从任何版本的数据构建。 只要用于构造模型的信息可以有效地构造它,那么模型就可以公开各种操作和属性来操作和查看该信息。