gpt4 book ai didi

c# - 同一 View 中的多个模型?

转载 作者:行者123 更新时间:2023-11-30 19:59:24 26 4
gpt4 key购买 nike

我对 MVC 比较陌生,正在尝试使用代码优先的方法来制作单页表单供用户填写和提交。我目前在 Domain 文件夹中有几个模型类,但需要一个 View 来同时为用户显示每个模型的所有属性。

除此之外,我正在尝试让模型相互协作。例如,其中一个模型类包含以下内容:

namespace HROnboarding.Domain
{
public class SoftwareNeeded
{
//Primitive Properties
public int Id { get; set; }
public string SoftwareName { get; set; } //piece of software (GIMP, VS13, etc)
public bool isNeeded { get; set; } //whether or not it is needed by the user
}
}

但是,如果用户选择他们根本不需要计算机,那么这将是不需要的。此属性保留在如下所示的模型中:

namespace HROnboarding.Domain
{
public class Employee
{
public int ID { get; set; }

[DisplayName("First Name")]
public string FirstName { get; set; }
[DisplayName("Last Name")]
public string LastName { get; set; }
public string Department { get; set; }
public string Position { get; set; }
public bool NeedsPhone { get; set; }
public bool NeedsComputer { get; set; }
public bool NeedsCredit { get; set; }
}
}

目前,我已经为 Employee 生成了 MVC“开箱即用”的 HomeController 和相关 View ,因此它显示了上述可供用户更改和提交的属性。

我在另一个文件夹中还有一个 DbContext,用于每个模型,以便可以生成数据并将其连接到本地 SQL 数据库。

我怎样才能让 SoftwareNeeded 类显示在同一页面上,以便它同时可用?

我的猜测是,我需要以某种方式创建一个通用 View 文件来封装来自两个类的数据,并将其显示给用户。我的第一直觉是把所有的模型类数据放到一个表中,这样就可以一次全部填好,然后作为一个整体提交。

我显然不太确定从这里到哪里去,或者我是否能正确地解决问题。

非常感谢任何帮助,谢谢。

最佳答案

处理此问题的一种方法是使用 ViewModel,它由 View 所需的模型类型组成。

例如:

public class OnBoardEmployeeViewModel
{
public Employee Employee { get; set; }
public SoftwareNeeded SoftwareNeeded { get; set; }
}

另一种选择是仅由 View 中显示的字段构成您的 ViewModel,然后在提交时构造您的模型类的实例。

进一步阅读 MVC 中的 View 模型:http://sampathloku.blogspot.com/2012/10/how-to-use-viewmodel-with-aspnet-mvc.html

关于c# - 同一 View 中的多个模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24174018/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com