我在Document
的视图模型中添加了一个字段,该字段应允许用户将其与Tenant
关联。如果用户确实分配了租户,则效果很好,但是如果用户从下拉列表中选择了null选项,则验证会告诉我“ ItemID字段为必填项。”,其中ItemID
是{{1 }}。
在我看来,可能是我使用的编辑器模板不正确-我试图从租户列表中进行选择,而不是编辑租户。如果那是错误的,请告诉我,也许会建议一个更好的方法来获得下拉列表。
TenantViewModel
编辑器模板:SelectTenant.cshtml
namespace TenantPortal.Models
{
public class DocumentViewModel
{
...
[UIHint("SelectTenant")]
public TenantViewModel Tenant { get; set; }
}
public class TenantViewModel
{
private Tenant _ten = null;
public int ItemID { get; set; }
public string Display_Name { get; set; }
public string Legal_Name { get; set; }
...
}
}
答案 0 :(得分:1)
如果使用数据注释,则可以向模型添加验证。
请参阅下面的示例:
public class TenantViewModel
{
private Tenant _ten = null;
[Required]
public int ItemID { get; set; }
[Required]
[MaxLength(30)]
public string Display_Name { get; set; }
public string Legal_Name { get; set; }
...
}
有关数据注释check this
的更多信息此外,在代码/控制器操作方面,您需要使用ModelState.IsValid
检查以验证模型是否有效
答案 1 :(得分:1)
您的ItemID
字段是int
,因此不允许空值,因此模型验证失败。尝试将其更改为int?
(可为null的int)。如果未在表单中设置值,则该值将为null,但是如果选择了某个值,则ItemID
将成为所选值。
答案 2 :(得分:0)
我最终向我的文档视图模型添加了一个名为TenantID
的属性,使其与幕后的Tenant
属性进行通信,并为两个TenantID
下拉列表创建了SelectLists创建和编辑视图。它没有我想要的那么优雅,但可以。