使用 Fluent API 时如何控制 DisplayNameFor 结果
How to control DisplayNameFor result, when using FluentAPI
正在开发 ASP.NET MVC 5 应用程序。使用 Fluent API 定义模型图。我想更改列名称的外观,以便在执行 DisplayFor 时它能正确显示。例如,"Action Name",而不是 "ActionName"。
目前,我的流利 api 映射是....
this.Property(t => t.ActionName).HasColumnName("ActionName");
我想在 Action 和 Name 之间放置一个 space,这样当列出现时 table 列 header 会显示 "Action Name",而不是 "ActionName".所以,我认为这会起作用....
this.Property(t => t.ActionName).HasColumnName("Action Name");
但是,这会导致错误...
{"Invalid column name 'Audit Name'."}
在我的 HTML 中它设置为...
@Html.DisplayNameFor(model => model.ActionName)
我原以为 DisplayNameFor 会使用 .HasColumnName 设置,但显然不会。
我可以直接输入 HTML,但我正在尝试这样做 "correctly" 并了解其工作原理。
关于如何正确执行此操作的任何建议,以便 DisplayNameFor 结果 "Action Name"?
谢谢!
I could just type in the HTML directly, but I'm trying to do it "correctly" and understand how this works.
做事 "correctly" 意味着不使用实体 classes 作为 ViewModels - 它们有不同的用途。
为什么将实体用作 ViewModel 是个坏主意的一个很好的例子是用户帐户管理页面,例如,因为您需要 "New Password" 和 [=] 的两个 string
密码输入31=],但是您的实体 class 将只有一个 byte[]
用于密码 hash/digest(还有一个 salt
值,我希望) - 所以通过这个例子,我希望你明白为什么你不应该使用 User
实体作为 Web 应用程序中 UserEdit
页面的 ViewModel。
我不知道你的应用程序是做什么的,你也没有发布数据库设计,只是为你的 ViewModel
创建了一个不同的类型:
class SomePageViewModel {
[DisplayName("Action name")]
public String ActionName { get; set; }
}
当您 return 视图时,只需将实体对象的值复制到视图模型中即可:
public ActionResult ControllerAction() {
// ...
SomePageViewModel viewModel = new SomePageViewModel();
viewModel.ActionName = entityObject.ActionName;
return this.View( viewModel );
}
正在开发 ASP.NET MVC 5 应用程序。使用 Fluent API 定义模型图。我想更改列名称的外观,以便在执行 DisplayFor 时它能正确显示。例如,"Action Name",而不是 "ActionName"。
目前,我的流利 api 映射是....
this.Property(t => t.ActionName).HasColumnName("ActionName");
我想在 Action 和 Name 之间放置一个 space,这样当列出现时 table 列 header 会显示 "Action Name",而不是 "ActionName".所以,我认为这会起作用....
this.Property(t => t.ActionName).HasColumnName("Action Name");
但是,这会导致错误...
{"Invalid column name 'Audit Name'."}
在我的 HTML 中它设置为...
@Html.DisplayNameFor(model => model.ActionName)
我原以为 DisplayNameFor 会使用 .HasColumnName 设置,但显然不会。
我可以直接输入 HTML,但我正在尝试这样做 "correctly" 并了解其工作原理。
关于如何正确执行此操作的任何建议,以便 DisplayNameFor 结果 "Action Name"?
谢谢!
I could just type in the HTML directly, but I'm trying to do it "correctly" and understand how this works.
做事 "correctly" 意味着不使用实体 classes 作为 ViewModels - 它们有不同的用途。
为什么将实体用作 ViewModel 是个坏主意的一个很好的例子是用户帐户管理页面,例如,因为您需要 "New Password" 和 [=] 的两个 string
密码输入31=],但是您的实体 class 将只有一个 byte[]
用于密码 hash/digest(还有一个 salt
值,我希望) - 所以通过这个例子,我希望你明白为什么你不应该使用 User
实体作为 Web 应用程序中 UserEdit
页面的 ViewModel。
我不知道你的应用程序是做什么的,你也没有发布数据库设计,只是为你的 ViewModel
创建了一个不同的类型:
class SomePageViewModel {
[DisplayName("Action name")]
public String ActionName { get; set; }
}
当您 return 视图时,只需将实体对象的值复制到视图模型中即可:
public ActionResult ControllerAction() {
// ...
SomePageViewModel viewModel = new SomePageViewModel();
viewModel.ActionName = entityObject.ActionName;
return this.View( viewModel );
}