Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在MVC中提交表单时,更改字段值的最佳实践是什么?_C#_Asp.net Mvc_Maskedinput - Fatal编程技术网

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架构的新手,有人告诉我只使用模型进行数据验证,从来没有听说过“让你的控制器轻而模型重”,这就是为什么我有疑问。非常感谢:)