この投稿では、「MVVM パターン (UniDynArray、UniDynArray を .NET Object Object にフラット化)」について説明したいと思います。
モデルを作成する
コントローラーの作成
ビューを作成
モデル ファイル (Models\CustomerViewModel2.cs) を開き、コードを貼り付けます。
名前空間 Test_MvcApplication.Models {
public class Customer2
{
public int ID { get; set; }
public string Name { get; set; }
public DateTime HireDate { get; set; }
}
public class Customer2Repository
{
private List<Customer2> m_custList = new List<Customer2>();
public List<Customer2> CustomerList
{
get
{
U2ConnectionStringBuilder l = new U2ConnectionStringBuilder();
l.Server = "localhost";
l.UserID = "user";
l.Password = "pass";
l.Database = "HS.SALES";
l.ServerType = "universe";
string lconnstr = l.ToString();
U2Connection c = new U2Connection();
c.ConnectionString = lconnstr;
c.Open();
U2Command command = c.CreateCommand();
command.CommandText = "CALL MV_TO_DATASET_SELECT_SUBROUTINE(?,?)"; // UniVerse subroutine
command.CommandType = CommandType.StoredProcedure;
U2Parameter p1 = new U2Parameter();
p1.Direction = ParameterDirection.InputOutput;
p1.Value = "";
p1.ParameterName = "@arg1";
U2Parameter p2 = new U2Parameter();
p2.Direction = ParameterDirection.InputOutput;
p2.Value = "";
p2.ParameterName = "@arg2";
command.Parameters.Add(p1);
command.Parameters.Add(p2);
command.ExecuteNonQuery();
string lRetValue = (string)command.Parameters[1].Value;
//command.Parameters[1].MV_To_POCO<int>();
m_custList = command.Parameters[1].MV_To_POCO<Customer2>();
return m_custList;
}
set
{
m_custList = value;
}
}
}
public class CustomerViewModel2
{
public Customer2 MyCustomer2 { get; set; }
public List<Customer2> CustomerList { get; set; }
public CustomerViewModel2(Customer2 pCustomer)
{
MyCustomer2 = pCustomer;
}
public CustomerViewModel2(List<Customer2> pCustomerList)
{
CustomerList = pCustomerList;
}
}
}
コントローラー ファイル (Controllers\MyUniDynArray2Controller.cs) を開きます。
名前空間 Test_MvcApplication.Controllers { public class MyUniDynArray2Controller : Controller { // // GET: /MyUniDynArrayController2/
public ActionResult Index()
{
Customer2Repository lvar = new Customer2Repository();
List<Customer2> lCustomer2List = lvar.CustomerList;
var l = new CustomerViewModel2(lCustomer2List);
return View(l);
}
}
}
ビュー ファイルを開く (Views\MyUniDynArray2\Index.cshtml)
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
<table border="1">
<tr>
<td>ID</td>
<td>Name</td>
<td>HireDate</td>
</tr>
@foreach (var myItem in Model.CustomerList)
{
<tr>
<td>@myItem.ID</td>
<td>@myItem.Name</td>
<td>@myItem.HireDate</td>
</tr>
}
</table>
「Shared\Layout.cshtml」ファイルを開き、次の行を追加します
<nav>
<ul id="menu">
<li>@Html.ActionLink("MyUniDynArray2", "Index", "MyUniDynArray2")</li>
<li>@Html.ActionLink("MyUniDynArray", "Index", "MyUniDynArray")</li>
<li>@Html.ActionLink("Home", "Index", "Home")</li>
<li>@Html.ActionLink("About", "About", "Home")</li>
</ul>
</nav>
アプリケーションを実行し、「MyUniDynArray2」を押します。Flatten UniDynArray が表示されます。基本的にUniDynArrayは.NETオブジェクト(List)の配列になる
UniVerse サブルーチンを使用
SUBROUTINE MV_TO_DATASET_SELECT_SUBROUTINE(ARG_INPUT,ARG_OUTPUT)
x = ARG_INPUT
ARG_OUTPUT = "100":@VM:"101":@VM:"102":@VM:"103":@FM:"ナンシー":@VM:"アンドリュー":@VM:"ジャネット":@VM :"マーガレット":@FM:"01/06/1991":@VM:"06/07/1996":@VM:"11/08/1999":@VM:"12/10/2001"
戻る