我正在使用Entity Framework编写MVC4和VBNet的应用程序。我有两个模型,Printer.vb和Request.vb
它们如下所示,
Request.vb
Public Class Request
Public Property ID() As Integer
Public Property User() As String
Public Property Printer() As Printer
Public Property Approval() As Boolean
End Class
Public Class RequestDBContext
Inherits DbContext
Public Property Requests() As DbSet(Of Request)
End Class
Printer.vb
Public Class Printer
Public Property ID() As Integer
Public Property Name() As String
End Class
Public Class PrinterDBContext
Inherits DbContext
Public Property Printers() As DbSet(Of Printer)
End Class
我在创建引用数据库中存在的打印机模型的请求时遇到了问题。
我的请求视图如下所示,
<div class="editor-field">
@Html.EditorFor(Function(model) model.User)
@Html.EditorFor(Function(model) model.Approval)
@Html.EditorFor(Function(model) model.Printer)
@Html.ValidationMessageFor(Function(model) model.User)
</div>
但是`Model.EditorFor(model.Printer)没有创建任何东西。
如何在请求视图中添加一个字段,该视图将找到打印机并在该请求中引用它?
答案 0 :(得分:1)
你不能只对MVC框架一无所知的类型使用@Html.EditorFor()
。
框架已经知道如何处理常见基本类型(如String和int。
)的@Html.EditorFor()
您需要做的就是按照这样的教程 blog post,或者您只需谷歌“自定义编辑器模板Asp.net MVC”
基本上你要在Views / Shared / EditorTemplates / Printer.vbhtml中创建一个文件,并告诉MVC框架要显示的内容。
在您的Printer.vbhtml中,它将类似于 @model Printer
@Html.Textbox("", Model.ID.GetValueOrDefault())
@Html.Textbox("", Model.Name.GetValueOrDefault())