我遇到了很多看似这样的事情:
public class TestClass
{
public string Property1 {get;set;}
public string Property2 {get;set;}
public AddressType Type {get;set;}
[RequiredIf("", "", ErrorMessage="...")]
public int TypeId
{
get
{
if (Type == null)
return 0;
else
return Type.Id;
}
set
{
Type = new AddressType() { Id = value };
}
}
}
public class AddressType
{
public int Id {get;set;}
public string Description {get;set;}
}
这样我就可以模拟以剃刀形式绑定信息并来回绑定。我想知道是否有任何人知道在哪里可以对“AddressType”应用属性来设置类的默认绑定属性,或者将属性放在TestClass的“Type”字段中并说“When你绑定,真的绑定到Type.Id,但验证整个对象,否则......
不确定我是否正确地问这个问题,但是如果可能的话我只想要一个更清晰的实现......我觉得在课堂上添加TypeId是不必要的,这使得它很难阅读。
Thx Guys!
答案 0 :(得分:0)
好的,我不是100%对你在这里提出的问题,但我会假设AddressType可以为空而试一试。
public class TestClass
{
public AddressType? Type {get;set;}
public int TypeId
{
get
{
return Type.HasValue ? Type.Value.Id : 0;
}
}
}
查看AddressType虽然我猜测它的查找类型来自某种数据存储区。我使用T4模板生成这些类型的查找列表(不会在版本之间更改值)作为我的应用程序中的枚举。如果你这样做会减轻你的压力。
现在,如果您想要的是剃须刀视图中的AddressType值下拉列表,您将不得不在控制器中做一些大的工作(不太感激)
public class BetterTestClass
{
public AddressType? Type {get;set;}
}
...在你的AddressController中
public ActionResult Create(){
// the name in the ViewBag should match
// the property you want to have a list on
ViewBag.Type = repository
.AddressTypes
.ToList()
.Select(p => new SelectListItem {
Key = p.Id,
Value = p.Description});
ViewData.Model = new BetterTestClass();
return View();
}
如果你搜索@ Html.DropDownList
,有很多例子修改强>
通过你的问题弄清楚你想要实现的目标真的很难。但我会尽力帮助。首先我要正确理解你的问题: