如何创建自定义编辑视图MVC?

时间:2013-09-29 16:44:57

标签: asp.net-mvc vb.net asp.net-mvc-4

我正在使用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)没有创建任何东西。

如何在请求视图中添加一个字段,该视图将找到打印机并在该请求中引用它?

1 个答案:

答案 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())