Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.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# 数据库中的字段可以为空,但强制用户键入_C#_Asp.net Mvc_Asp.net Mvc 3_Entity Framework_Ef Code First - Fatal编程技术网

C# 数据库中的字段可以为空,但强制用户键入

C# 数据库中的字段可以为空,但强制用户键入,c#,asp.net-mvc,asp.net-mvc-3,entity-framework,ef-code-first,C#,Asp.net Mvc,Asp.net Mvc 3,Entity Framework,Ef Code First,如何实现以下场景: 我想要一个注册向导来创建userProfile帐户。在这种形式下,我有一个公司名(必选)。然后,我将获取该companyName并在companyfromation表中开始一条记录。此表中的所有列都应该可以为空,因为我是在用户注册时启动记录的 用户注册后,系统会提示他们需要完成公司信息的填写,因此会将他们带到公司信息表单 现在我的问题是,我如何让这个表单具有必需的属性,并让用户填写所有必需的信息?(不仅仅是JavaScript,还有模型状态验证)我考虑过一个viewModel

如何实现以下场景: 我想要一个注册向导来创建
userProfile
帐户。在这种形式下,我有一个
公司名
(必选)。然后,我将获取该
companyName
并在
companyfromation
表中开始一条记录。此表中的所有列都应该可以为空,因为我是在用户注册时启动记录的

用户注册后,系统会提示他们需要完成公司信息的填写,因此会将他们带到公司信息表单

现在我的问题是,我如何让这个表单具有必需的属性,并让用户填写所有必需的信息?(不仅仅是JavaScript,还有模型状态验证)我考虑过一个viewModel,但我得到了一个“无法将类型'project.model.companyinformation'转换为project.model.companyinformation viewModel'”的错误

我对C#,asp.net MVC非常陌生。我过去只是简单地使用vb.net和asp.net webforms


任何帮助都将不胜感激。

创建模型是正确的方法。不能从实体强制转换为模型。您需要自己传输数据

var entity = GetEntity();
var model = new MyModelType();
model.ID = entity.ID;
model.OtherField = entity.OtherField;
有一个名为的有用项目可以为您实现自动化

另一种方法是创建自定义验证属性
RequiredIf
。这将验证指定的布尔字段的值是否为true:

public class MyModelType
{
    [NotMapped]
    private bool _enableFullValidation;

    [RequiredIf("_enableFullValidation")]
    public string MyNoneRequiredDBField { get; set; }
}

创建模型是正确的方法。不能从实体强制转换为模型。您需要自己传输数据

var entity = GetEntity();
var model = new MyModelType();
model.ID = entity.ID;
model.OtherField = entity.OtherField;
有一个名为的有用项目可以为您实现自动化

另一种方法是创建自定义验证属性
RequiredIf
。这将验证指定的布尔字段的值是否为true:

public class MyModelType
{
    [NotMapped]
    private bool _enableFullValidation;

    [RequiredIf("_enableFullValidation")]
    public string MyNoneRequiredDBField { get; set; }
}

Jquery将是一个简单的解决方案。为什么需要js和模型状态验证??@kandroid。用户可以轻松地禁用JS验证。您应该始终准备好服务器端验证。Jquery将是一个简单的解决方案。为什么需要js和模型状态验证??@kandroid。用户可以轻松地禁用JS验证。您应该始终有服务器端验证。哦,好的,谢谢您为我澄清这一点。你会选择哪种方法?模型映射的自定义要求?取决于您的应用程序。就个人而言,我不喜欢我的实体靠近我的视野。我总是使用一种特殊的模式。将实体作为模型意味着您的UI必须与数据库相匹配,或者您需要在视图中使用大量转换逻辑。另外,如果你想说一个依赖项字段(例如,
你在哪里听说过我们?:[Other]
*-
请解释[\uuu]
*),则RequiredIf样式验证很方便,但我不会用它脏你的实体,除非你这样做更快更干净。哦,好的,谢谢你为我清理了它。你会选择哪种方法?模型映射的自定义要求?取决于您的应用程序。就个人而言,我不喜欢我的实体靠近我的视野。我总是使用一种特殊的模式。将实体作为模型意味着您的UI必须与数据库相匹配,或者您需要在视图中使用大量转换逻辑。此外,如果你想说一个依赖项字段(例如,
你在哪里听说过我们?:[Other]
*-
请解释[\uuuu]
*),则RequiredIf样式验证很方便,但我不会用它脏你的实体,除非这样做更快更干净。