在寫 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
{
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
//var TupleModel = new Tuple<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資料串接到前端了~
下次再筆記另外一種方式。