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

时间:2018-08-06 14:52:36

标签: c# .net asp.net-mvc model-view-controller

我是MVC的新手,所以我正在MVC .NET Core中做一个项目来学习
我在创建视图模型时遇到一些困难

型号:

void colorReduce(cv::Mat image, int div = 64) {

int nl = image.rows; // number of lines
int nc = image.cols * image.channels(); // total number of elements per line

for (int j = 0; j<nl; j++) {

    // get the address of row j
    uchar* data = image.ptr<uchar>(j);
    std::cout << "BEFORE: " << static_cast<int>(data[0]) << std::endl;
    for (int i = 0; i<nc; i++) {

        // process each pixel ---------------------

        data[i] = data[i] / div * div + div / 2;

        // end of pixel processing ----------------

    } // end of line
    std::cout << "AFTER: " << static_cast<int>(data[0]) << std::endl;
 }
}

我尝试了一些样式的ViewModels,但是这样做不正确。
在“查看要添加披萨”中,我想添加一个要通过下拉列表发送披萨的送货员的名称。
该项目就像一个管理比萨饼的网页。

2 个答案:

答案 0 :(得分:1)

送货人员来源有哪些选择?我猜这存储在数据库中,而不是一个枚举。如果是这种情况,您的视图模型可能看起来像这样:

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应该是一个枚举而不是字符串属性,因为通常会有一组预定义的大小供用户选择,而不是允许用户输入他们想要的任何内容

答案 1 :(得分:-1)

您快到了。据我了解,一个披萨只需要一名送货员就可以送货。因此,您可以执行以下操作:

[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