我试图学习ASP.Net Core,而且我很难弄清楚如何在MVC'样式'(?)中移动数据。我所关注的微软网站上的ASP.NET Core教程并不涉及模型之间的任何关系。 (对他们来说,似乎是一个愚蠢的疏忽?)也许我的Google-Fu关闭了,所以如果这是明显的,或者任何人有一些阅读材料,我可以看看ASPNETCore,我会很感激。理解如何在ASP.net中处理数据时遇到问题核心
我有两个模型。一个叫设备,另一个叫做设备类型。 在我的设备模型中,我有一个对DeviceType属性的引用。
public class Device{
[Key]
public int ID {get; set;}
[Required]
[Display(Name = "Device Name")]
public String deviceName {get; set;}
[Required]
[Display(Name="Description")]
public String deviceDescription {get; set;}
[Required]
[Display(Name="Type")]
public DeviceType deviceType{get; set;}
}
public class DeviceType{
[Key]
public int ID {get; set;}
[Required]
[Display(Name="Type")]
public String name {get;set;}
[Required]
[Display(Name="Description")]
public String description {get;set;}
}
我想知道如何为每个动作(CRUD)引用并获取特定Device对象的deviceType。我也不明白如何在处理我的视图时参考相关的设备类型。
GET创建 *如何让我的DeviceTypes的选择列表,以便用户可以创建一个设备,然后选择它是什么类型的设备? *我对View部分做了一些研究,看起来我需要使用速记Razor“@ model.SelectList()”的语法,但这些参数让我感到困惑。我不明白它要求什么。以下是控制器现在的操作。
public IActionResult Create()
{
return View();
}
指数 *在显示所有设备的循环,我将如何还包括在设备的结果表中的设备类型的名字吗? *在视图中,我会假设我可以使用@ Html.LabelFor来显示数据的名称是什么,但是如何获得实际值?
public async Task<IActionResult> Index()
{
return View(await _context.Device.ToListAsync());
}
更新/编辑 *我怎么会检索设备对象设备类型,然后允许用户编辑呢?
// GET: Devices/Edit/5
public async Task<IActionResult> Edit(int? id)
{
if (id == null)
{
return NotFound();
}
var device = await _context.Device.SingleOrDefaultAsync(m => m.ID == id);
if (device == null)
{
return NotFound();
}
return View(device);
}
删除 *我还没有在这看着呢,但我在这里把它在编程的情况下其他动作时,那里有什么注意事项?
// GET: Devices/Delete/5
public async Task<IActionResult> Delete(int? id)
{
if (id == null)
{
return NotFound();
}
var device = await _context.Device
.SingleOrDefaultAsync(m => m.ID == id);
if (device == null)
{
return NotFound();
}
return View(device);
}
同样,如果除了微软的“用Mac和Linux构建一个带有Visual Studio代码的asp.net核心应用程序”外,我还可以看到其他一些资源,这将解释如何在视图/控制器内部的模型中引用关系,这很好。
谢谢
EF Core尚未对延迟加载进行加载。 https://docs.microsoft.com/en-us/ef/core/querying/related-data – Alexan
@Alex:是的,我忘了这一点。或者,也许我只是觉得他们已经排序了将近两年;)。没什么大不了。老实说,我还没有看到很多好的理由来延迟加载,反正。一般来说,你只需要加载你需要的一切。 –
即使EF支持它,也不要在网络应用程序中使用延迟加载,只要您可以提供帮助。这是为什么:http://ardalis.com/avoid-lazy-loading-entities-in-asp-net-applications – ssmith