我添加了一个字段添加到视图模型的Document
应该允许用户将其与Tenant
关联。如果用户不指定租户它工作正常,但如果从下拉列表中选择空选项,然后验证告诉我,“条目标识字段是必需的。”,其中ItemID
是TenantViewModel
领域。
它发生,我认为也许是我使用的编辑器模板错了 - 我试图从租户的列表中进行选择,而不是编辑租客。如果说的不对,让我知道,也许提出一个更好的方式来获得的下拉列表。
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; }
...
}
}
编辑模板:SelectTenant.cshtml
@using CMS.DocumentEngine.Types.Tenantportal
@using TenantPortal.Models
@model TenantViewModel
@{
Layout = null;
var opts = new SelectList(TenantProvider.GetTenants(), "ItemID", "Display_Name");
}
@Html.DropDownListFor(model => model.ItemID, opts, "(none)")
如果你使用的数据注解,你可以添加验证模型。
请参阅下面我举的例子:
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
检查,以验证您的模型是否有效还是无效
你ItemID
字段是int
所以它不会允许空值,因此模型验证失败。试着改变它int?
(可为空INT)。如果值未设置形式,则该值将是无效的,但如果选择的值,则ItemID
将选定的值。
我最终加入另一个属性我叫TenantID
文档视图模式,有它背后的幕后的Tenant
物业沟通,并创造了两个创建和编辑观点TenantID
下拉菜单SelectLists。这比我想的那么优雅,但它的作品。