LoginSignup
0
3

More than 5 years have passed since last update.

ASP.net MVC + Dropdown + VB.net

Last updated at Posted at 2016-11-01

概要

Transactionの入力補助として、Masterの内容を、DropdownListに取得し、Transactionの更新処理を行う。

イメージ

image.png

環境

Windows7 32bit SP1
Microsoft SQL Server 11.00.3000
Visual Studio2013 Professional Version12.0 Update4
VB.net

実装

Model

Employee.vb
Public Class Employee
 Public Property Id As Integer
 Public Property Name As String
 Public Property CountryId As String
End Class
Country.vb
Public Class Employee
 Public Property Id As Integer
 Public Property CountryId As String
 Public Property CountryName As String
End Class
SampleContext.vb
Public Class SampleContext
    Inherits DbContext
 Public Sub New()
  MyBase.New("SampleContext")
 End Sub
 Public Property Employees As DbSet(Of Employee)
 Public Property Countries As DbSet(Of Country)
End Class

Control

EmployeeControl.vb
Public Class EmployeeController
    Inherits Controller
 <HttpGet>
 Function Index() As ActionResult
  Return View(db.Employees.ToList())
 End Function

 <HttpGet>
 Function Create() As ActionResult
  Dim emp As New Employee
  Dim ct = db.Countrys.ToList()
  ViewBag.model1 = New SelectList(ct, "Id", "CountryId", emp.CountryId)
  ViewBag.model1 = db.Countries.[Select](Function(m) New SelectListItem() With {
                            .Text = m.CountryName, 
                            .Value = m.CountryId})
  Return View()
 End Function

 <HttpPost>
 Function Create(<Bind(Include:="ID,Name,CountryId")> ByVal employ As Employee) As ActionResult
  If ModelState.IsValid Then
   db.Employees.Add(employ)
   db.SaveChanges()
   Return RedirectToAction("Index")
  End If
  Return View(employ)
 End Function
End Class

View

Index.vbhtml
@modeltype  DropdownHoge.Models.Employee
@Code
    ViewData("Title") = "Create"
End Code
@Using (Html.BeginForm())
@Html.AntiForgeryToken()
    @<div class="form-horizontal">
         <h4>Employee</h4>
         <hr />
        @Html.ValidationSummary(True, "", New With {.class = "text-danger"})
         <div class="form-group">
             @Html.LabelFor(Function(model) model.Name, htmlAttributes:=New With {.class = "control-label col-md-2"})
             <div class="col-md-10">
                 @Html.EditorFor(Function(model) model.Name, New With {.htmlAttributes = New With {.class = "form-control"}})
                 @Html.ValidationMessageFor(Function(model) model.Name, "", New With {.class = "text-danger"})
             </div>
         </div>
         <div class="form-group">
             @Html.LabelFor(Function(model) model.CountryId, htmlAttributes:=New With {.class = "control-label col-sm-2"})
             <div class="col-sm-10">
                 @Html.DropDownListFor(Function(model) model.CountryId, DirectCast(ViewBag.model1, IEnumerable(Of SelectListItem)),"SELECT", New With{.class="form-control"})
             </div>
         </div>
         <div class="form-group">
             <div class="col-md-offset-2 col-md-10">
                 <input type="submit" value="Create" class="btn btn-default" />
             </div>
         </div>
    </div>

End Using
Create.vbhtml
@modeltype  DropdownHoge.Models.Employee
@Code
    ViewData("Title") = "Create"
End Code

<h2>Create</h2>

@Using (Html.BeginForm())
    @Html.AntiForgeryToken()
    @<div class="form-horizontal">
         <h4>Employee</h4>
         <hr />
        @Html.ValidationSummary(True, "", New With {.class = "text-danger"})
         <div class="form-group">
             @Html.LabelFor(Function(model) model.Name, htmlAttributes:=New With {.class = "control-label col-md-2"})
             <div class="col-md-10">
                 @Html.EditorFor(Function(model) model.Name, New With {.htmlAttributes = New With {.class = "form-control"}})
                 @Html.ValidationMessageFor(Function(model) model.Name, "", New With {.class = "text-danger"})
             </div>
         </div>
         <div class="form-group">
             @Html.LabelFor(Function(model) model.CountryId, htmlAttributes:=New With {.class = "control-label col-sm-2"})
             <div class="col-sm-10">
                 @Html.DropDownListFor(Function(model) model.CountryId, DirectCast(ViewBag.model1, IEnumerable(Of SelectListItem)),"SELECT", New With{.class="form-control"})
             </div>
         </div>
         <div class="form-group">
             <div class="col-md-offset-2 col-md-10">
                 <input type="submit" value="Create" class="btn btn-default" />
             </div>
         </div>
    </div>

End Using

画面

kekka.png

最後に

ここまでいきつくのが大変だった。理解が足りないところが多いので、理解後、部分ビューを使っても試してみる。

0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3