0

私は現在、このLynda.com のチュートリアルを使用して、Visual Basic .NET で MVC 4 と Razor を学習しています。

現在、Web サイト全体でアクセスしたい主な変数は、Model フォルダー内の Auction.vb というクラスにあります。このクラスには次のものがあります。

Namespace Models
    Public Class Auction

        Private Property x_ID As Long
        Private Property x_Title As String
        Private Property x_Description As String
        Private Property x_ImageURL As String
        Private Property x_StartTime As DateTime
        Private Property x_EndTime As DateTime
        Private Property x_StartPrice As Decimal
        Private Property x_CurrentPrice As Decimal

        Public Property ID() As Long
            Get
                Return x_ID
            End Get
            Set(x_ID As Long)

            End Set
        End Property

        Public Property Title() As String
            Get
                Return x_Title
            End Get
            Set(value As String)

            End Set
        End Property

        Public Property Description() As String
            Get
                Return x_Description
            End Get
            Set(x_Description As String)

            End Set
        End Property

        Public Property ImageURL() As String
            Get
                Return x_ImageURL
            End Get
            Set(x_ImageURL As String)

            End Set
        End Property

        Public Property StartTime() As DateTime
            Get
                Return x_StartTime
            End Get
            Set(x_StartTime As DateTime)

            End Set
        End Property

        Public Property EndTime() As DateTime
            Get
                Return x_EndTime
            End Get
            Set(x_EndTime As DateTime)

            End Set
        End Property

        Public Property StartPrice() As Decimal
            Get
                Return x_StartPrice
            End Get
            Set(x_StartPrice As Decimal)

            End Set
        End Property

        Public Property CurrentPrice() As Decimal
            Get
                Return x_CurrentPrice
            End Get
            Set(x_CurrentPrice As Decimal)

            End Set
        End Property

    End Class
End Namespace

これは、新しいコントローラー AuctionsController.vb によって読み取られています。このコントローラには次のものがあります。

Namespace Models
    Public Class AuctionsController
        Inherits System.Web.Mvc.Controller

        '
        ' GET: /Auctions

        Function Index() As ActionResult
            Return View()
        End Function

        Public Function Auction() As ActionResult
            Dim test_auction = New MVCAuction.Models.Auction() With { _
                .Title = "Example Auction", _
                .Description = "This is an example Auction", _
                .StartTime = DateTime.Now, _
                .EndTime = DateTime.Now.AddDays(7), _
                .StartPrice = 1D, _
                .CurrentPrice = Nothing _
            }

            Return View(test_auction)
        End Function

    End Class
End Namespace

Auction() モデルは、同じ名前のビュー (Auction.vbhtml) に読み込まれています。このビューには次のものがあります。

@ModelType MVCAuction.Models.Auction

@Code
    Dim testauction = Model
End Code

<div class="auction">

    <h3>@testauction.Title</h3>

    <div class="details">
        <p>Start time: @testauction.StartTime.ToString()</p>
        <p>End time: @testauction.EndTime.ToString()</p>
        <p>Starting price: @testauction.StartPrice.ToString()</p>
        <p>Current price:
        @*
            Since CurrentPrice is nullable we have to check to see if it has a value before we call .ToString()!
        *@

        @If testauction.CurrentPrice = Nothing Then
            @: [No bids]
        Else
            @: <span>@testauction.CurrentPrice.ToString()</span>
        End If
        </p>
    </div>

    @If testauction.ImageURL IsNot String.Empty Then
        @: <img src="@testauction.ImageURL" title="@testauction.Title" />
    End If

    <div class="description">
        @testauction.Description
    </div>

</div>

Visual Studio 2012 に入ると、AuctionsController.vb クラス内に、xauction 変数が新しく提供された情報を入力することになっているブレーク ポイントを配置しました。代わりに、以下に示すように、何も設定されていないことが示されます。 xauction 内のプロパティに、各プロパティ/変数の新しい値が設定されていません

その結果、Web ブラウザーから次のように表示されるようになりました。 ブラウザで出力

知りたかった:

  1. 変数があり、すべてが宣言されているにもかかわらず、それらがモデル内に取り込まれていないのはなぜですか。と
  2. ViewData や実際のオブジェクトを渡すものを使用せずに、新しく入力された情報がビューを介して表示されるようにするにはどうすればよいですか?

どんな助けでも本当に感謝しています。

4

1 に答える 1

1

モデルでは、setすべてのプロパティのメソッドは実際には何も保存していません。

Public Property ID() As Long
  Get
    Return x_ID
  End Get
  Set(x_ID As Long)

  End Set
End Property

する必要があります

Public Property ID() As Long
  Get
    Return x_ID
  End Get
  Set(value As Long)
    x_ID = value
  End Set
End Property
于 2013-06-13T20:20:16.820 に答える