程式C#asp.net core 多個Model傳資料到前端

在寫 asp.net core MVC 時,常常需要傳多個資料模型(Models)到前端,

這邊就先筆記一種傳多個Model到前端的方法。

 

1.建立一個TestModel.cs ,裡面放兩個Class。

程式碼:

namespace Test.Models
{
    public class TestModel
    {
        public string Type { get; set; }
        public string TypeName { get; set; }
    }

    public class ImgOrderModel
    {
        public string OrderValue { get; set; }
        public string OrderName { get; set; }
        public int Order { get; set; }
    }
}

2.在Controller 裡面,建立物件並賽入測試資料。

使用 Tuple 資料型別,塞入陣列 -> 傳送到前端。

 

程式碼:

       [HttpGet]
        public async Task TestMulModels()
        {
           

            TypeNameModel[] TypeList =
            {
            new TypeNameModel{ Type="A",TypeName="分類" },
            new TypeNameModel{ Type="B",TypeName="物件偵測" },
            new TypeNameModel{ Type="C" ,TypeName="與意分割" }
            };

            ImgOrderModel[] Order =
            {
            new ImgOrderModel{ OrderValue="OA",OrderName="最新",Order= 1 },
            new ImgOrderModel{ OrderValue="OB",OrderName="價錢高低",Order= 2 },
            new ImgOrderModel{ OrderValue="OC",OrderName="難易度",Order= 3 }
            };

            var TupleModel = new Tuple(TypeList, Order);//重要~~

            //var TupleModel = new Tuple<List, ImgOrderModel[]>(TypeList, Order);//補充:如果資料型態是list,就要轉換型態

            return View(TupleModel);
        }

 

3.前端程式

主要就是把Model 的物件型態引用進來,期他就跟之前都是相同的了

程式碼:

@model Tuple< GoMarking.Models.TypeNameModel[], GoMarking.Models.ImgOrderModel[] >

    < h1>上傳圖片< /h1>
    < form enctype="multipart/form-data" asp-controller="Home" asp-action="Requester" method="post">
        類別名稱:
        < select name="TypeName">
            @foreach ( var item in Model.Item2)
            {
                < option value="@item.Type">@item.TypeName< /option>
            }
        < /select> < br />
        排序方法:
        @foreach (var item in Model.Item3)
        {
            @item.OrderName
            < input type="checkbox" id="@item.OrderValue" name="@item.OrderName" value="@item.OrderValue" />
        }
        < br />
        備註: < input name="Remark" />
        < button type="submit" class="btn btn-primary">查詢< /button>
    < /form>

 

總結: 這樣就可以把後端多個models資料串接到前端了~

下次再筆記另外一種方式。