0

ドロップダウンリストのデフォルト値を次のように設定する必要があります。

@Html.DropDownList("BillId", "") 

ユーザーは必ずしも何かを選択する必要はありませんが、リストはエラーをスローします

The ViewData item that has the key 'BillId' is of type 'System.Int32' but must be of type 'IEnumerable<SelectListItem>'

値が選択されておらず、ボックスがデフォルトの空白状態のままになっている場合。

私のコントローラーは次のとおりです。

    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.BillId = New SelectList(BillList, "BillId", "BillDate")

        Return View(job)
    End Function

    '
    ' POST: /Job/Create

    <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
4

1 に答える 1

0

モデルジョブにビューよりもBillIdのプロパティがない場合、ドロップダウンマークアップは次のようになります。

@Html.DropDownList("Job_BillId", ViewBag.BillId)

また、モデルJobにはプロパティBillIdが含まれており、別の名前でViewBagを作成し、それに応じてビューのマークアップで使用します。たとえば、次のようになります。

コントローラでBillIdの代わりに別の名前でViewBagを作成します

ViewBag.BillIdList =  New SelectList(BillList, "BillId", "BillDate")

そして、ビューでこれを以下のように使用します

@Html.DropDownListFor(model => model.BillId, ViewBag.BillIdList)

これがお役に立てば幸いです。

于 2012-08-16T17:15:34.547 に答える