gpt4 book ai didi

c# - 不允许下拉选择空值

转载 作者:行者123 更新时间:2023-11-30 22:01:36 25 4
gpt4 key购买 nike

我正在使用 MVC4 应用程序。下面是我的模型

    public class ViewModel
{
public string AssignedUserName { get; set; }
public IList<SelectListItem> PossibleAssignees { get; set; }

[Required]
public string Comment { get; set; }
}

查看:

<table style="width: 100%; ">
<tr>
<td>Assigned To:</td>
<td>@Html.DropDownListFor(x => x.AssignedUserName, Model.PossibleAssignees)</td>
<td>@Html.ValidationMessageFor(m => m.AssignedUserName, "Assigned To Required")</td>
<tr></table>

PossibleAssignes 是一个下拉菜单,值应该是 -> EmptyString,"Mr.Barr"。

因此,如果用户选择 EmptyString 意味着我需要抛出验证,如“它是必需的”字段。

我尝试添加[Required] 字段验证器。它是一个集合,其中有一些空字符串值作为下拉值,所以我不确定如何将 [Required] 字段用于具有空字符串的集合。我不想让空字符串出现在下拉列表中。

我如何验证这一点?

最佳答案

不要将空字符串分配给列表中的值,而是将其用作默认值,[Required] 将正常工作。在您看来,将其用作:

@Html.DropDownListFor(x => x.AssignedUserName, Model.PossibleAssignees, String.Empty)

在你的 View 模型中:

public class ViewModel
{
[Required]
public string AssignedUserName { get; set; }
public IList<SelectListItem> PossibleAssignees { get; set; }

[Required]
public string Comment { get; set; }
}

编辑(我会留下我的第一个答案,因为它可能对其他人有用)

您可以进行自定义验证:

public class ViewModel
{
[Required]
[ValidateAssignedUserName()]
public string AssignedUserName { get; set; }
public IList<SelectListItem> PossibleAssignees { get; set; }

[Required]
public string Comment { get; set; }
}

[AttributeUsage(AttributeTargets.Property, AllowMultiple = true, Inherited = true)]
public sealed class ValidateAssignedUserName : ValidationAttribute
{
private const string _defaultErrorMessage = "Select a user.";

public ValidateAssignedUserName()
: base(_defaultErrorMessage)
{ }

public override bool IsValid(object value)
{
string user = value as string;

if (user != null && user.Length > 0)
{
return true;
}

return false;
}
}

关于c# - 不允许下拉选择空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27563289/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com