トップ回答者
vb.netでMVCを作る際 Ilistの使用方法 C#サンプルあり

質問
-
お疲れ様です
MVCでDBにアクセルするプログラムを自動的なコード作成等を
使わずに昔ながらの方法で作ろうと思い
C#のサンプルを探しました
VB.NETだとIlistとlist()の部分がうまくいきません
ネットを見ても良くわからないのでよろしくお願いします
12: public class EmployeesData
13: {
14: public ILis tGetEmployees()
15: {
16: System.Text.StringBuilder sql = new System.Text.StringBuilder();
17: sql.Append("SELECT ");
18: sql.Append(" EMPLOYEES.EMPLOYEE_ID, ");
19: sql.Append(" EMPLOYEES.FIRST_NAME, ");
20: sql.Append(" EMPLOYEES.LAST_NAME, ");
21: sql.Append(" DEPARTMENTS.DEPARTMENT_NAME ");
22: sql.Append("FROM ");
23: sql.Append(" HR.EMPLOYEES ");
24: sql.Append("INNER JOIN ");
25: sql.Append(" HR.DEPARTMENTS ");
26: sql.Append("ON ");
27: sql.Append(" EMPLOYEES.DEPARTMENT_ID = DEPARTMENTS.DEPARTMENT_ID ");
28: sql.Append("ORDER BY ");
29: sql.Append(" EMPLOYEE_ID ");
30:
31: IList employeesList = new List();
32:
33: using (OracleDataReader rdr =
OracleHelper.ExecuteReader(OracleHelper.ConnectionStringLocalTransaction,
CommandType.Text,
sql.ToString(),
null))
34: {
35: while (rdr.Read())
36: {
37: MvcApp.Models.EmployeeInfo employee =
new MvcApp.Models.EmployeeInfo(rdr.GetInt32(0),
rdr.GetString(1),
rdr.GetString(2),
rdr.GetString(3));
38: employeesList.Add(employee);
39: }
40: }
41:
42: return employeesList;
43: }
44: }問題は31行の所で
vb.netならdim employeeList as Ilist = new list()
と書くのかなと思いますが受け付けてくれません
- 編集済み yasukunv 2017年9月5日 8:21 一部文字がおかしい
回答
すべての返信
-
C# ですが、以下の記事のコードが参考になりませんか?
w2ui Grid
http://surferonwww.info/BlogEngine/post/2015/12/26/w2ui-grid-in-aspnet-web-forms-application.aspx2 つサンプルコードがある内の最初の方のコードを見てください。
Record クラスの定義と、while ループを回して 1 レコード取得するごとに Record クラスを初期化して取得したデータを Record クラスのプロパティを使って代入し、最初の方で data.records = new List<Record>(); で初期化した List<Record> 型オブジェクトに Add しているところに注目してください。
List<Record> 型オブジェクトが完成したら、それを Model として View に渡してやれば目的は果たせるはずです。
不明点があったら質問してください。
-
【追伸】
Oracle でどこまで機能が充実しているのか分かりませんが・・・
SQL Server の場合と同等な機能があれば、既存のデータベースから Entity Data Model (EDM) を作り、スキャフォールディング機能を使って Create, Read, Update, Delete (CRUD) 操作を行うための ASP.NET MVC アプリを一切自力でコードを書かないで作ることが可能です。
スキャフォールディング機能
http://surferonwww.info/BlogEngine/post/2017/07/23/creating-controller-and-view-in-mvc-using-scaffolding-function.aspx今回自力でコードを書いているのが勉強のためということでなければ、そちらの方向を検討された方が良いと思います。
-
ありがとうございます
まさしくその通りでした
自分で作ったプログラムを載せますとまずmodelのところに
Public Class info
Public Property HINMEI_CD As String
Public Property HINMEI As String
End ClassImports Oracle.DataAccess.Client
Public Class MhinmeiData
Public Function GetHinmei() As IList
Dim sSql As String
Dim Da As OracleDataAdapter
Dim dtTable As DataTable
Dim dtSet As New DataSet
Dim dtRow As DataRow
Dim cn As OracleConnection
cn = New OracleConnection("User ID=****;Password=****;data source=202.23.251.6:1521/****")
sSql = "select hinmei_cd,hinmei from mhinmei order by hinmei_cd"
Da = New OracleDataAdapter(sSql, cn)
Da.Fill(dtSet, "Table")
dtTable = dtSet.Tables("Table")
Dim hinmeilist As New List(Of info)
For i = 0 To dtTable.Rows.Count - 1
dtRow = dtTable.Rows(i)
Dim hinmei As info = New info
hinmei.HINMEI_CD = dtRow(0)
hinmei.HINMEI = dtRow(1)
hinmeilist.Add(hinmei)Next
Return hinmeilist
End Function
End Classと二つのクラスを作り
コントローラーの所に以下のようなクラスを作り
Namespace Web_Apli_MVC3_2
Public Class HinmeiController
Inherits System.Web.Mvc.Controller'
' GET: /HinmeiFunction Index() As ActionResult
Dim hinmeiList As IList
Dim MhinmeiDAta As New MhinmeiData
hinmeiList = MhinmeiDAta.GetHinmei
Return View(hinmeiList)
End FunctionEnd Class
End Namespaceビューの所に
Hinmeiのフォルダーを作り
厳密な型を指定しinfoのクラスを指定し
リストを指定すると見事に表示されました
<%@ Page Language="VB" Inherits="System.Web.Mvc.ViewPage(Of IEnumerable (Of Web_Apli_MVC3_2.info))" %>
<!DOCTYPE html>
<html>
<head runat="server">
<title>Index</title>
</head>
<body>
<p>
<%: Html.ActionLink("Create New", "Create") %>
</p>
<table>
<tr>
<th></th>
<th>
HINMEI_CD
</th>
<th>
HINMEI
</th>
</tr>
<% For Each item In Model %>
<tr>
<td>
<%--<%: Html.ActionLink("Edit", "Edit", New With {.id = item.PrimaryKey}) %> |
<%: Html.ActionLink("Details", "Details", New With {.id = item.PrimaryKey}) %> |
<%: Html.ActionLink("Delete", "Delete", New With {.id = item.PrimaryKey}) %>--%>
</td>
<td>
<%: item.HINMEI_CD %>
</td>
<td>
<%: item.HINMEI %>
</td>
</tr>
<% Next %>
</table>
</body>
</html>今までずっと悩んでいましたが結局 誤植が原因だったようです