簡體   English   中英

ViewModel MVC使用其他模型的信息制作下拉列表

[英]ViewModel MVC making a DropDown List with info from other model

我是MVC的新手,所以我正在MVC .NET Core中進行項目研究
我有一些困難要做一個視圖模型

楷模:

[Table("Pizzas")]
public class Pizza
{
    [Key]
    public int id { get; set; }

    public string Flavour { get; set; }
    public DateTime Date { get; set; }
    public string Size { get; set; }
    public string Deliveryman { get; set; }
}

public class Deliveryman
{
    [Key]
    public int Id { get; set; }

    public string Name { get; set; }
    public string Cellphone { get; set; }
    public string Car { get; set; }
}

我嘗試了一些樣式的ViewModels,但是這樣做的方式不正確。
在“查看添加披薩”中,我想添加一個要通過下拉列表發送披薩的送貨員的名字。
該項目就像一個管理比薩餅的網頁。

送貨人員來源有哪些選擇? 我猜這存儲在數據庫中,而不是一個枚舉。 如果是這種情況,您的視圖模型可能如下所示:

public class PizzaViewModel
{
    public int id { get; set; }

    public string Flavour { get; set; }

    public DateTime Date { get; set; }

    public string Size { get; set; }

    public IEnumerable<SelectListItem> Deliverymen { get; set; }

    public int SelectedDeliveryMan { get; set; }
}

DeliveryMen中每個項目的構建方式如下:

 new SelectListItem
 {
     Value = individualDeliveryMan.Id,
     Text = individualDeliveryMan.FullName
 });

然后在您看來,您將獲得以下內容:

@model YourProject.PizzaViewModel
...
@Html.DropDownListFor(x => x.SelectedDeliveryMan, Model.DeliveryMen)
...

當數據回傳到您的控制器時,屬性SelectedDeliveryMan將保存在您的下拉列表中選擇的送貨員的Id

在一個不相關的注釋上,我猜想Size應該是一個枚舉而不是字符串屬性,因為通常會有一組預定義的大小供用戶選擇,而不是允許用戶輸入他們想要的任何內容。

你快到了 據我了解,一個披薩只需要一名送貨員就可以送貨。 因此,您可以執行以下操作:

[Table("Pizzas")]
public class Pizza
{
    [Key]
    public int id { get; set; }

    public string Flavour { get; set; }
    public DateTime Date { get; set; }
    public string Size { get; set; }
    public Deliveryman Deliveryman { get; set; }
}

將這些信息發布到控制器后,將具有您需要找出誰提供披薩的所有信息。

如果您還想獲取反向信息(找出某個送貨員送來的披薩),則可以執行以下操作:

public class Deliveryman
{
    [Key]
    public int Id { get; set; }

    public string Name { get; set; }
    public string Cellphone { get; set; }
    public string Car { get; set; }
    public ICollection<Pizza> Pizzas {get; set;}
}

與功能強大的ORM(例如實體框架(Core))結合使用時,您可以做很多事情。 如果需要,這里有更多信息: https : //www.learnentityframeworkcore.com/conventions/one-to-many-relationship

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM