前提・実現したいこと
DropDownListForの書き方(言語はVisual Basic)を知りたいです。
発生している問題・エラーメッセージ
Create.vbhtmlファイルの「 IEnumerable(Of SelectListItem)ViewBag.SelectOptions」の箇所に波線でエラーが出ていました。 「IEnumerable(Of SelectListItem)はインターフェース型であり、式として使用することはできません。」
該当のソースコード
VisualBasic
1※Test.vbのファイルです。 2 3Imports System.ComponentModel.DataAnnotations 4Imports System.ComponentModel 5Imports Microsoft.VisualBasic 6 7Public Class Test 8 Inherits System.Web.Mvc.Controller 9 10 <Key()> 11 <DisplayName("ID")> 12 Public Property Id As String 13 14 <DisplayName("判定")> 15 Public Property Judge As Integer 16 17End Class
VisualBasic
1※TestsController.vbのファイルです。 2※今回の質問に不要だと思われるActionを一部省略しております。 3 4Imports System 5Imports System.Collections.Generic 6Imports System.Data 7Imports System.Data.Entity 8Imports System.Linq 9Imports System.Net 10Imports System.Web 11Imports System.Web.Mvc 12Imports MvcApp 13 14Namespace Controllers 15 Public Class TestsController 16 Inherits Controller 17 18 Private db As New MyMvcContext 19 20 ' GET: Tests 21 Function Index() As ActionResult 22 Return View(db.Tests.ToList()) 23 End Function 24 25 ' GET: Tests/Create 26 Function Create() As ActionResult 27 ViewBag.SelectOptions = New SelectListItem() { 28 New SelectListItem() With {.Value = "1", .Text = "合格"}, 29 New SelectListItem() With {.Value = "0", .Text = "不合格"} 30 } 31 32 Return View() 33 End Function 34 35 ' POST: Tests/Create 36 '過多ポスティング攻撃を防止するには、バインド先とする特定のプロパティを有効にしてください。 37 '詳細については、https://go.microsoft.com/fwlink/?LinkId=317598 を参照してください。 38 <HttpPost()> 39 <ValidateAntiForgeryToken()> 40 Function Create(<Bind(Include:="Id, Judge")> ByVal test As Test) As ActionResult 41 If ModelState.IsValid Then 42 db.Tests.Add(test) 43 db.SaveChanges() 44 Return RedirectToAction("Index") 45 End If 46 Return View(test) 47 End Function 48 End Class 49End Namespace
VisualBasic
1※Create.vbhtmlのViewファイルです。 2※コード真ん中あたりの箇所で、エラーが発生しております。 3 4@ModelType MvcApp.Test 5 6@Code 7 ViewData("Title") = "Create" 8End Code 9 10<h2>Create</h2> 11 12@Using (Html.BeginForm()) 13 @Html.AntiForgeryToken() 14 15 @<div class="form-horizontal"> 16 <h4>Test</h4> 17 <hr /> 18 @Html.ValidationSummary(True, "", New With {.class = "text-danger"}) 19 <div class="form-group"> 20 @Html.LabelFor(Function(model) model.Id, htmlAttributes:=New With {.class = "control-label col-md-2"}) 21 <div class="col-md-10"> 22 @Html.EditorFor(Function(model) model.Id, New With {.htmlAttributes = New With {.class = "form-control"}}) 23 @Html.ValidationMessageFor(Function(model) model.Id, "", New With {.class = "text-danger"}) 24 </div> 25 </div> 26 27 <div class="form-group"> 28 @Html.DropDownListFor(Function(model) model.Judge, IEnumerable(Of SelectListItem)ViewBag.SelectOptions, New With {.Class = "form-control"}) 29 </div> 30 31 <div class="form-group"> 32 <div class="col-md-offset-2 col-md-10"> 33 <input type="submit" value="Create" class="btn btn-default" /> 34 </div> 35 </div> 36 </div> 37End Using 38 39<div> 40 @Html.ActionLink("Back to List", "Index") 41</div> 42 43@Section Scripts 44 @Scripts.Render("~/bundles/jqueryval") 45End Section
試したこと
以下の記事を参考にしつつ、C#とVBの変換サイトを使って変換してみました。
https://www.buildinsider.net/web/bookaspmvc5/040204
今回のエラー箇所については、変換がうまくできなかったため、色々試した結果が、上記のCreate.vbhtmlのファイルになります。
【C#とVBの変換サイト】
https://converter.telerik.com/
補足情報(FW/ツールのバージョンなど)
統合開発環境
Visual Studio2019
(言語:VB.NET、プロジェクトテンプレート:ASP.NET Webアプリケーション MVC)
使用PC
Windows10
※平日は仕事のため、返信が19:30-22:00になります。
※休日の返信は不定期です。
申し訳ございませんが、どうぞよろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/29 12:22