私が取り組んでいるMVCアプリのドロップダウンリストをRazorで作成しました。
@Html.DropDownList("BillId", "")
ただし、ユーザーは私のプログラムのロジックに従って何も選択する必要はありません(リストには私のコントローラーの「Bill」オブジェクトが表示されます)。彼らが何も選択しない場合、私はエラーを受け取ります
The ViewData item that has the key 'BillId' is of type 'System.Int32' but must be of type 'IEnumerable<SelectListItem>'.
何も選択されていない場合にBillId0を返すステートメントをRazorで作成するにはどうすればよいですか?
私はストレートJavaとVBのバックグラウンドを持っているので、構文はわかりませんが、
If DropdownBox.SelectedIndex = 0
Else
BillId = DropdownBox.SelectedIndex
End
次のようにコントローラー:
Function Create(id As Integer) As ViewResult
ViewBag.id = id
Dim job As Job = New Job
job.CustomerId = id
job.JobAmount = 0
job.JobDate = Date.Now()
job.JobStatus = "Active"
Dim BillList = New List(Of Bill)()
Dim BillQuery = From s In db.Bills
Select s
BillList.AddRange(BillQuery)
ViewBag.BillIdList = New SelectList(BillList, "BillId", "BillDate")
ViewBag.BillId = New SelectList(BillList, "BillId", "BillDate")
Return View(job)
End Function
createのPOST関数は次のとおりです。
<HttpPost()>
Function Create(job As Job) As ActionResult
If ModelState.IsValid Then
db.Jobs.Add(job)
db.SaveChanges()
Dim customer As Customer = db.Customers.Find(job.CustomerId)
Dim customerNumber As String = customer.CustCellphone.ToString()
Dim messageSender As SendMessage = New SendMessage
Dim smsMessage As String = "LAUNDRY: Job Number " & job.JobId & " has been booked in. You will be notified when individual services within it are ready for collection."
messageSender.SendMessage(smsMessage, customerNumber)
Dim url As String = "/RequestedService/AddService/" + job.JobId.ToString()
Return Redirect(url)
End If
Return View(job)
End Function
編集
POSTのように、これがどのように返されるのか疑問に思っていました。「null」をチェックできる可能性がありますか?ただし、送信ボタンを押した瞬間に問題があるのではないかと思います