【发布时间】:2021-09-05 10:09:25
【问题描述】:
我对 C#、MVC 和 EF 还很陌生,遇到了一个我似乎无法解决的问题。
我正在尝试更新 Create.cshtml 视图,以便它显示/列出 itemName 而不是 itemID,其中项目名称位于不同的表中。
到目前为止,这是我的部分代码:
型号:
using System;
using System.Collections.Generic;
namespace CIMSTest.Models
{
public class DirectActivityItem
{
public int ID { get; set; }
public int DirectTypeID { get; set; }
public string ActivityName { get; set; }
public DateTime DateActivityCreated { get; set; }
public bool ActivityLive { get; set; }
public ICollection<DirectActivityGroup> DirectActivityGroups { get; set; }
public DirectType DirectType { get; set; }
}
}
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
namespace CIMSTest.Models
{
public class DirectType
{
public int DirectTypeID { get; set; }
public string DirectTypeName { get; set; }
public bool DirectTypeLive { get; set; }
public ICollection<DirectActivityItem> DirectActivityItems { get; set; }
}
}
控制器(创建):
public IActionResult Create()
{
ViewData["DirectTypeID"] = new SelectList(_context.DirectTypes, "DirectTypeID", "DirectTypeID");
return View();
}
// POST: DirectActivityItems/Create
// To protect from overposting attacks, enable the specific properties you want to bind to.
// For more details, see http://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create([Bind("ID,DirectTypeID,ActivityName,DateActivityCreated,ActivityLive")] DirectActivityItem directActivityItem)
{
if (ModelState.IsValid)
{
_context.Add(directActivityItem);
await _context.SaveChangesAsync();
return RedirectToAction(nameof(Index));
}
ViewData["DirectTypeID"] = new SelectList(_context.DirectTypes, "DirectTypeID", "DirectTypeID", directActivityItem.DirectTypeID);
return View(directActivityItem);
}
创建.cshtml
@model CIMSTest.Models.DirectActivityItem
@{
ViewData["Title"] = "Create";
}
<h1>Create</h1>
<h4>DirectActivityItem</h4>
<hr />
<div class="row">
<div class="col-md-4">
<form asp-action="Create">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group">
<label asp-for="DirectTypeID" class="control-label"></label>
<select asp-for="DirectTypeID" class ="form-control" asp-items="ViewBag.DirectTypeID"></select>
</div>
<div class="form-group">
<label asp-for="ActivityName" class="control-label"></label>
<input asp-for="ActivityName" class="form-control" />
<span asp-validation-for="ActivityName" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="DateActivityCreated" class="control-label"></label>
<input asp-for="DateActivityCreated" class="form-control" />
<span asp-validation-for="DateActivityCreated" class="text-danger"></span>
</div>
<div class="form-group form-check">
<label class="form-check-label">
<input class="form-check-input" asp-for="ActivityLive" /> @Html.DisplayNameFor(model => model.ActivityLive)
</label>
</div>
<div class="form-group">
<input type="submit" value="Create" class="btn btn-primary" />
</div>
</form>
</div>
</div>
<div>
<a asp-action="Index">Back to List</a>
</div>
@section Scripts {
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
}
如您所见,Direct ActivityItem 表包含 DirectTypeID,但在“创建”页面上,我想列出 DirectType 表中的 DirectTypeNames 而不是 ID,因为用户不知道 ID 是什么。
如果有人能提供任何信息,将不胜感激。
【问题讨论】:
标签: c# asp.net-mvc entity-framework