Urb*_*net 2 asp.net-mvc attributes razor
我有一个非常简单的要求.在MVC4项目中,我必须使用@HTML.labelFor字段显示一个表单,该字段从viewmodel类的属性的属性字段中派生值.它适用于简单的属性,如Employee Code,但它不适用于person类的自定义数据类型.
namespace MvcApplication1.Models
{
public class EmployeeViewModel
{
[Display(Name = "Employee Code:")]
public string EmpCode { get; set; }
public person PersonInfo { get; set; }
[Display(Name = "Department Name:")]
public string Department { get; set; }
}
}
namespace MvcApplication1.Models
{
public class Person
{
[Display(Name = "First Name:")]
public string FName { get; set; }
[Display(Name = "Last Name:")]
public string LName { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
@Html.LabelFor(m => Model.EmpCode) 正确显示标签为员工代码:
@Html.LabelFor(m => Model.PersonInfo.FName) 将标签显示为FName:
@Html.LabelFor(m => Model.PersonInfo.LName) 将标签错误地显示为LName:
@Html.LabelFor(m => Model.PersonInfo.Department) 正确显示标签作为部门名称:
我试图弄清楚如何显示对象类型属性的属性信息.我有使用扩展方法吗?
您使用的是错误的属性.下面这个简单的例子有效.
控制器:
public ActionResult Index()
{
var model = new ParentModel {
Name = "Parent name",
Child = new ChildModel {
Name = "Child name"
}
};
return View(model);
}
Run Code Online (Sandbox Code Playgroud)
楷模:
public class ParentModel
{
[DisplayName("Parent name:")]
public string Name { get; set; }
public ChildModel Child { get; set; }
}
public class ChildModel
{
[DisplayName("Child name:")]
public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
视图:
@model ParentModel
@Html.LabelFor(model => model.Name)
@Html.LabelFor(model => model.Child.Name)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2565 次 |
| 最近记录: |