2

ASP.net MVC3 (MS Visual Studio 2010) ビュー ページで UniDynArray を使用する方法について誰か助けてもらえますか?

プロジェクトに参照 (U2.Data.Client) を追加することができました。コントローラーでは使用できますが、ビュー ページでは使用できません。

UniDynArray を利用する理由は、動的配列をコントローラーからビューに渡し、コントローラーに戻したいからです。このように、ビューで使用するためにすべてのフィールドを VIEWDATA に設定する必要はありません。

4

2 に答える 2

3

次の方法で、コントローラーからMVCビューにUniDynArrayを渡す方法を説明します。

  1. MVVMパターン(生のUniDynArray)
  2. ViewBagパターン(生のUniDynArray)
  3. MVVMパターン(UniDynArray、UniDynArrayを.NET Object DataTableにフラット化)
  4. MVVMパターン(UniDynArray、UniDynArrayをPOCOオブジェクトにフラット化)

この投稿では、MVVMパターン(Raw UniDynArray)に回答します。後で残りをカバーします。

ASP.NETMVC3プロジェクトを作成する pic1

モデルを作成する pic2

pic3

コントローラーを追加する pic4

pic5

ビューを作成する pic5a

pic5b

'CustomerViewModel.cs'ファイルを開き、次のコードを貼り付けます

名前空間Test_MvcApplication.Models{

public class CustomerViewModel
{
    public Customer MyCustomer { get; set; }
    public CustomerViewModel(Customer pCustomer)
    {
        MyCustomer = pCustomer;
    }
}

public class Customer
{
    private UniDynArray myVar;
    public UniDynArray MyUniDynArray
    {
        get
        {
            U2ConnectionStringBuilder conn_str = new U2ConnectionStringBuilder();
            conn_str.UserID = "user";
            conn_str.Password = "pass";
            conn_str.Server = "localhost";
            conn_str.Database = "HS.SALES";
            conn_str.ServerType = "UNIVERSE";
            conn_str.AccessMode = "Native";   // FOR UO
            conn_str.RpcServiceType = "uvcs"; // FOR UO
            conn_str.Pooling = false;
            string s = conn_str.ToString();
            U2Connection con = new U2Connection();
            con.ConnectionString = s;
            con.Open();
            Console.WriteLine("Connected.........................");

            // get RECID

            UniSession us1 = con.UniSession;

            UniSelectList sl = us1.CreateUniSelectList(2);

            // Select UniFile
            UniFile fl = us1.CreateUniFile("CUSTOMER");
            fl.RecordID = "2";
            myVar = fl.Read();
            return myVar;
        }
        set
        {
            myVar = value;
        }
    }
}

}

'MyUniDynArrayController.cs'を開き、次のコードを貼り付けます。オブジェクトをビューに渡していることに気付いたので、そのオブジェクトにはUniDynArrayがあります

名前空間Test_MvcApplication.Controllers{パブリッククラスMyUniDynArrayController:コントローラー{// // GET:/ MyUniDynArray /

    public ActionResult Index()
    {
        Customer c = new Customer();
        UniDynArray r = c.MyUniDynArray;

        var l = new CustomerViewModel(c);

        return View(l);

    }

}

}

'MyUniDynArray \ Index.cshtml'を開き、次のコードを貼り付けます。@ModelにはViewModelオブジェクト(UniDynArray)が含まれています

@ {ViewBag.Title="インデックス"; }

MyUniDynArray

==================

@ Model.MyCustomer.MyUniDynArray

pic8

'Shared \ Layout.cshtml'ファイルを開き、次の行を追加します

<nav>
            <ul id="menu">
                <li>@Html.ActionLink("MyUniDynArray", "Index", "MyUniDynArray")</li>
                <li>@Html.ActionLink("Home", "Index", "Home")</li>
                <li>@Html.ActionLink("About", "About", "Home")</li>

            </ul>
 </nav>

pic9

アプリケーションを実行し、「MyUniDynArray」を押します。ビューにUniDynArrayが表示されます。UniDynArrayをHTML5/Razorコントロールにどのようにバインドするのかわかりません。そのため、UniDynArrayをフラット化することをお勧めします。

pic6

pic7

MVCビューで入力されたUniDynArray

ここに画像の説明を入力してください

于 2013-03-20T20:39:00.113 に答える
0

この投稿では、「MVVM パターン (UniDynArray、UniDynArray を .NET Object Object にフラット化)」について説明したいと思います。

モデルを作成する pic1

コントローラーの作成 pic2

ビューを作成 pic3

モデル ファイル (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);



    }

}

}

pic4

ビュー ファイルを開く (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>

pic5

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

pic6

アプリケーションを実行し、「MyUniDynArray2」を押します。Flatten UniDynArray が表示されます。基本的にUniDynArrayは.NETオブジェクト(List)の配列になる

pic7

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"

戻る

于 2013-03-24T01:26:41.663 に答える