gpt4 book ai didi

c# - 如何将模型绑定(bind)到剑道组合框以使用模型验证?

转载 作者:太空宇宙 更新时间:2023-11-03 23:45:23 26 4
gpt4 key购买 nike

我正在尝试使用我的 viewModel 来验证客户端和服务器端的表单。除了我的 Kendo Combobox 之外,我已经完成了所有验证工作。我已将模型绑定(bind)到多选,但我不知道如何区分列表和所选值。

组合框:

@(Html.Kendo().ComboBox()
.Name("roleRequest_UnavailableRoles")
.BindTo(new SelectList(Model.roleRequest.UnavailableRoles, "Value", "Text"))
.HtmlAttributes(new { name="addRoleName", style = "width:250px", required = true, roleValidationMessage = "foo" })
.Value(Model.roleRequest.roleName)
.DataTextField("Text")
.DataValueField("Value")
.Filter(FilterType.StartsWith)
.Placeholder("Select Role...")
.AutoBind(false)
.Suggest(true)
)

查看模型:

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

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

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

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

public virtual IEnumerable<SelectListItem> UnavailableRoles
{
get
{
var unavailableList = new List<Role>();

unavailableList = RoleHelper.GetUnavailableRoles(usersName, application);

var unavailableRolesList = (unavailableList.Distinct());

var UnavailableRoles = new List<SelectListItem>();

foreach (var role in unavailableRolesList)
{
UnavailableRoles.Add(new SelectListItem
{
Value = role.RoleID.ToString(),
Text = role.RoleName
});
}


return new SelectList(UnavailableRoles, "Value", "Text");
}
}

Controller : [HttpPost] 公共(public) ContentResult RoleRequest(AddRoleRequestViewModel viewModel) { 如果(ModelState.IsValid) { 返回内容(“1”); } 返回内容(“”);

上面的代码确实可以编译,但是如果在组合框中没有选择任何项目,我无法让 Controller 返回无效。谁能解释如何解决这个问题?

如有任何帮助,我们将不胜感激。

最佳答案

如果您使用 Html.Kendo().ComboBoxFor(),您可以将它绑定(bind)到类似于此的模型属性:

@(Html.Kendo().ComboBoxFor(m => m.UnavailableRoles)
.Name("roleRequest_UnavailableRoles")
.BindTo(new SelectList(Model.roleRequest.UnavailableRoles, "Value", "Text"))
.HtmlAttributes(new { name="addRoleName", style = "width:250px", required = true, roleValidationMessage = "foo" })
.Value(Model.roleRequest.roleName)
.DataTextField("Text")
.DataValueField("Value")
.Filter(FilterType.StartsWith)
.Placeholder("Select Role...")
.AutoBind(false)
.Suggest(true)
)

请注意,执行此操作时,您不需要 Name()Value() 属性,因为它们将在使用 ComboBoxFor( )

这将负责将控件绑定(bind)到模型,还允许您使用验证。

此外,我在您的模型中遗漏了一件事:您需要另一个属性来表示实际值(除了选项之外)。我会做这样的事情:

public List<Guid> RoleIds { get; set; } // or List<int> if you're using integers

然后将您的 ComboBoxFor 更改为 ComboBoxFor(x => x.RoleIds)

关于c# - 如何将模型绑定(bind)到剑道组合框以使用模型验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27742112/

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