Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/75.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# 来自ModelState.AddModelError()的错误消息不';不出现_C#_Html_Asp.net Mvc_Visual Studio 2015 - Fatal编程技术网

C# 来自ModelState.AddModelError()的错误消息不';不出现

C# 来自ModelState.AddModelError()的错误消息不';不出现,c#,html,asp.net-mvc,visual-studio-2015,C#,Html,Asp.net Mvc,Visual Studio 2015,我的程序有可以创建项目(其行为类似于文件夹)的用户,用户可以在项目内添加文档。 用户可以与其他用户共享项目 我已经阻止用户在同一个项目中添加同一个人两次,但我似乎无法显示我想要的错误消息 该电子邮件具有必需的属性,并且会显示这些错误消息(如果无效,或者框为空) 我不是在使用ModelState.AddErrorMessage()吗 这就是变量在模型中的方式 [EmailAddress(ErrorMessage ="Please enter a valid email address!")

我的程序有可以创建项目(其行为类似于文件夹)的用户,用户可以在项目内添加文档。 用户可以与其他用户共享项目

我已经阻止用户在同一个项目中添加同一个人两次,但我似乎无法显示我想要的错误消息

该电子邮件具有必需的属性,并且会显示这些错误消息(如果无效,或者框为空)

我不是在使用ModelState.AddErrorMessage()吗

这就是变量在模型中的方式

    [EmailAddress(ErrorMessage ="Please enter a valid email address!")]
    [Display(Name = "Email")]
    [Required(ErrorMessage = "You must enter an email!")]
    public string email { get; set; }
这是我控制器的一部分

//Prevent double share
List<ProjectModel> userProjects = projectService.getAllProjects(user.email);
    foreach(var proj in userProjects)
    {
        if(proj.name == userService.getProjectByID(urlInt).name)
        {
            //This is the error message I am trying to display
            ModelState.AddModelError(user.email, "This user already has access to this project!");
            return View(user);
        }
    }
userService.share(user.email, urlInt);
return RedirectToAction("../Dashboard/Dashboard");
//防止双重共享
List userProjects=projectService.getAllProjects(user.email);
foreach(用户项目中的var项目)
{
if(proj.name==userService.getProjectByID(urlInt.name)
{
//这是我试图显示的错误消息
AddModelError(user.email,“此用户已经有权访问此项目!”);
返回视图(用户);
}
}
userService.share(user.email,urlInt);
返回重定向到操作(“../Dashboard/Dashboard”);
这是我的看法

@using (Html.BeginForm("Share", "User", FormMethod.Post, new { @class = "add-document-form" }))
{ 
    <div class="add-document-div">
        <div class="form-group">
            <label for="email" class="control-label">Email address</label>
            <br />
            @Html.TextBoxFor(m => m.email, new { @class = "form-conrtol" })
            <br />

            <!--Here is the validation for the email button-->
            @Html.ValidationMessageFor(m => m.email, "", new { @class = "text-danger" })
        </div>
    </div>
    <input type="submit" class="btn btn-fab" value="Send invitation" />
}
@使用(Html.BeginForm(“Share”、“User”、FormMethod.Post、new{@class=“adddocumentform”}))
{ 
电子邮件地址

@TextBoxFor(m=>m.email,新的{@class=“form conrtol”})
@Html.ValidationMessageFor(m=>m.email,“,new{@class=“text danger”}) }
您正在使用的重载包含两个参数;要添加错误的模型属性的名称,以及实际错误。您需要确保第一个参数的名称正确。在这种情况下,我假设
“email”


当前,您将为它提供
user.email
包含的任何内容,而不是字段名。

这是

ModelState.AddErrorModel("<some form field name>", "<your error message>");

正在尝试将错误消息绑定到user.email的值。表单中不存在此项。

若要通过控制器添加错误以进行服务器端验证,只需以字符串格式提供密钥名称。。因此,在您的情况下,这应该是可行的:

ModelState.AddErrorModel("email", "This user already has access to this project!");
return View(user);

让我知道这是否有帮助

原来我只需要把
用户。email
改成
“email”
就像已经指出的那样

当时,这对我不起作用的原因是另一个人正在清理我们的服务库,并中断了我与数据库的连接,因此我的表单根本没有发布

在我修复后,错误消息显示


谢谢大家的帮助

非常感谢您的快速回复!我将
user.email
更改为
“email”
,这是变量的名称,但消息仍然没有显示。知道为什么吗?
空字符串确实会被AddModelErrorHmm覆盖…它似乎不起作用,可能它没有覆盖模型中给出的验证。也许我需要考虑另一种方法。谢谢你的建议!现在可以了!我把我的答案贴在下面,谢谢你的帮助!谢谢你的回复!我将
user.email
更改为
“email”
,这是变量的名称,但消息仍然没有显示。你知道为什么吗?你的表单中有这样一行:
@Html.ValidationSummary(true,“,new{@class=“text danger”})
ModelState.AddErrorModel("email", "This user already has access to this project!");
return View(user);