私は現在、この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 変数が新しく提供された情報を入力することになっているブレーク ポイントを配置しました。代わりに、以下に示すように、何も設定されていないことが示されます。
その結果、Web ブラウザーから次のように表示されるようになりました。
知りたかった:
- 変数があり、すべてが宣言されているにもかかわらず、それらがモデル内に取り込まれていないのはなぜですか。と
- ViewData や実際のオブジェクトを渡すものを使用せずに、新しく入力された情報がビューを介して表示されるようにするにはどうすればよいですか?
どんな助けでも本当に感謝しています。