C# 在MVC中提交表单时,更改字段值的最佳实践是什么?
我的C# 在MVC中提交表单时,更改字段值的最佳实践是什么?,c#,asp.net-mvc,maskedinput,C#,Asp.net Mvc,Maskedinput,我的视图中有很多字段都被屏蔽了。它们被屏蔽是因为用户需要使用掩码来查看,但在提交数据库中的值之前,我需要删除这些掩码 我不想把代码弄乱,因为这是我的项目中最重要的视图之一 那么,做这件事最好的做法是什么 假设我有这个模型: public class MyViewModel { public string MyMaskedProperty { get; set;} } 而视图中的此代码: @Html.TextboxFor(x=> x.MyMaskedProperty, new {
视图中有很多字段都被屏蔽了。它们被屏蔽是因为用户需要使用掩码来查看,但在提交数据库中的值之前,我需要删除这些掩码
我不想把代码弄乱,因为这是我的项目中最重要的视图之一
那么,做这件事最好的做法是什么
假设我有这个模型
:
public class MyViewModel {
public string MyMaskedProperty { get; set;}
}
而视图中的此代码
:
@Html.TextboxFor(x=> x.MyMaskedProperty, new { @class="myMask"} )
我应该:
在对表单进行子限制之前,使用javascript删除我的视图上的掩码
移除my车型上的遮罩
,更改MyMaskedProperty
的get
,以返回未遮罩的值
移除my控制器上的遮罩,因为它只需要从此处和以后的位置解除遮罩
比上述3种解决方案更好的解决方案
提前谢谢 与第二个选项类似,您可以简单地向视图模型添加一个只读字段:
public class MyViewModel {
public string MyMaskedProperty { get; set;}
public string MyUnmaskedProperty
{
get
{
// return an "unmasked" version of MyMaskedProperty
}
}
}
即使要用JavaScript修改该值,也不能真正隐式地信任它,而且无论如何都要验证服务器端。在控制器中执行这项操作并不理想,因为这只是需要到处重复的过程代码。按照“保持控制器轻,模型重”的建议,这种逻辑真正属于模型
实际上,模型本身可以从数据的任何版本构建。只要用于构造模型的信息能够有效地构造它,那么模型就可以公开各种操作和属性来操纵和查看该信息。与第二个选项类似,您可以简单地向视图模型添加只读字段:
public class MyViewModel {
public string MyMaskedProperty { get; set;}
public string MyUnmaskedProperty
{
get
{
// return an "unmasked" version of MyMaskedProperty
}
}
}
即使要用JavaScript修改该值,也不能真正隐式地信任它,而且无论如何都要验证服务器端。在控制器中执行这项操作并不理想,因为这只是需要到处重复的过程代码。按照“保持控制器轻,模型重”的建议,这种逻辑真正属于模型
实际上,模型本身可以从数据的任何版本构建。只要用于构建模型的信息能够有效地构建它,那么模型就可以公开各种操作和属性来操纵和查看这些信息。这就是我想要的解释。我是MVC架构的新手,有人告诉我只使用模型进行数据验证,从来没有听说过“让你的控制器轻而模型重”,这就是为什么我有疑问。非常感谢:)这就是我想要的解释。我是MVC架构的新手,有人告诉我只使用模型进行数据验证,从来没有听说过“让你的控制器轻而模型重”,这就是为什么我有疑问。非常感谢:)