使用辅助表列值添加dropdownlist

ekqde3dh  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(429)

我必须添加一个dropdownlist到我现有的项目“moviesite”,我有一个主表“moviestable”添加,编辑和删除电影。现在添加了一个新的表“流派”来添加电影流派。第二个表由两列组成-1,“genreid设置为primarykey和identity,第二列是“name”,由动作、戏剧、喜剧等类型组成,并在主表中添加了一列“genrerefid”,设置为外键。现在我想访问main priject中下拉列表的辅助表列。所以我创建了一个新的模型类“genreclass.cs”,并添加了dbcontext。现在我开始学习如何在模型、控制器和索引中实现它。

  1. NewmovieClass.cs
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Threading.Tasks;
  6. using System.ComponentModel.DataAnnotations;
  7. using Moviesite.Enums;
  8. using System.ComponentModel.DataAnnotations.Schema;
  9. namespace Moviesite.Models
  10. {
  11. public class NewmovieClass
  12. {
  13. [Key]
  14. public int Movieid { get; set; }
  15. [Required]
  16. public string Movietitle { get; set; }
  17. [Required]
  18. public string Description { get; set; }
  19. [Required]
  20. public string Storyline { get; set; }
  21. public int Year { get; set; }
  22. public DateTime Releasedate { get; set; }
  23. public int Runtime { get; set; }
  24. [Column(TypeName="nvarchar(50)")]
  25. public Mvetypenum MovieType { get; set; }
  26. public int GenreRefId { get; set; }
  27. [ForeignKey("GenreRefId")]
  28. public GenreClass Genre { get; set; }
  29. }
  30. }
  31. GenreClass.cs
  32. using System;
  33. using System.Collections.Generic;
  34. using System.Linq;
  35. using System.Threading.Tasks;
  36. using System.ComponentModel.DataAnnotations;
  37. using Moviesite.Enums;
  38. using System.ComponentModel.DataAnnotations.Schema;
  39. namespace Moviesite.Models
  40. {
  41. public class GenreClass
  42. {
  43. [Key]
  44. public int GenreId { get; set; }
  45. public string Name { get; set; }
  46. public ICollection<NewmovieClass> newmovieClasses { get; set; }
  47. }
  48. }
  49. MveController.cs
  50. using Microsoft.AspNetCore.Mvc;
  51. using System;
  52. using System.Collections.Generic;
  53. using System.Linq;
  54. using System.Threading.Tasks;
  55. using Moviesite.Models;
  56. using Microsoft.EntityFrameworkCore;
  57. namespace Moviesite.Controllers
  58. {
  59. public class MveController : Controller
  60. {
  61. private readonly ApplicationDbContext _db;
  62. public MveController(ApplicationDbContext db)
  63. {
  64. _db = db;
  65. }
  66. public IActionResult Index()
  67. {
  68. var displaydata = _db.Moviestable.ToList();
  69. return View(displaydata);
  70. }
  71. [HttpGet]
  72. public async Task<IActionResult> Index (String Mvesearch)
  73. {
  74. ViewData["Getmoviedetails"] = Mvesearch;
  75. var mvequery = from x in _db.Moviestable select x;
  76. if (!string.IsNullOrEmpty(Mvesearch))
  77. {
  78. mvequery = mvequery.Where(x => x.Movietitle.Contains(Mvesearch) || x.Description.Contains(Mvesearch));
  79. }
  80. return View(await mvequery.AsNoTracking().ToListAsync());
  81. }
  82. public IActionResult Create()
  83. {
  84. return View();
  85. }
  86. [HttpPost]
  87. public async Task<IActionResult> Create([Bind("Movieid,Movietitle,Description,Storyline,Year,Releasedate,Runtime,MovieType")] NewmovieClass nmc)
  88. {
  89. if (ModelState.IsValid)
  90. {
  91. _db.Add(nmc);
  92. await _db.SaveChangesAsync();
  93. return RedirectToAction("Index");
  94. }
  95. return View(nmc);
  96. }
  97. public async Task< IActionResult> Edit(int? id)
  98. {
  99. if(id==null)
  100. {
  101. return RedirectToAction("Index");
  102. }
  103. var getmvedetails = await _db.Moviestable.FindAsync(id);
  104. return View(getmvedetails);
  105. }
  106. [HttpPost]
  107. public async Task<IActionResult> Edit(NewmovieClass mc)
  108. {
  109. if (ModelState.IsValid)
  110. {
  111. _db.Update(mc);
  112. await _db.SaveChangesAsync();
  113. return RedirectToAction("Index");
  114. }
  115. return View(mc);
  116. }
  117. public async Task<IActionResult> Details(int? id)
  118. {
  119. if (id == null)
  120. {
  121. return RedirectToAction("Index");
  122. }
  123. var getmvedetails = await _db.Moviestable.FindAsync(id);
  124. return View(getmvedetails);
  125. }
  126. public async Task<IActionResult> Delete(int? id)
  127. {
  128. if (id == null)
  129. {
  130. return RedirectToAction("Index");
  131. }
  132. var getmvedetails = await _db.Moviestable.FindAsync(id);
  133. return View(getmvedetails);
  134. }
  135. [HttpPost]
  136. public async Task<IActionResult> Delete(int id)
  137. {
  138. var getmvedetails = await _db.Moviestable.FindAsync(id);
  139. _db.Moviestable.Remove(getmvedetails);
  140. await _db.SaveChangesAsync();
  141. return RedirectToAction("Index");
  142. }
  143. }
  144. }
  145. AppDbcontext
  146. using System;
  147. using System.Collections.Generic;
  148. using System.Linq;
  149. using System.Threading.Tasks;
  150. using Microsoft.EntityFrameworkCore;
  151. namespace Moviesite.Models
  152. {
  153. public class ApplicationDbContext : DbContext
  154. {
  155. public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options)
  156. {
  157. }
  158. public DbSet<NewmovieClass> Moviestable { get; set; }
  159. public DbSet<GenreClass> Genre { get; set; }
  160. }
  161. }
t3psigkw

t3psigkw1#

第一步获取和列出流派,并在 viewbag ```
public IActionResult Create()

  1. {
  2. viewbag.Genres=new SelectList(_db.Genre,"Name","GenreId");
  3. return View();
  4. }
  1. 第二步:绑定到 `dropdown html` ```
  2. <select asp-for="GenreRefId" asp-items="viewbag.Genres"></select>

第三步:添加 GenreRefIdPost 方法

  1. [HttpPost]
  2. public async Task<IActionResult> Create([Bind("Movieid,Movietitle,Description,Storyline,Year,Releasedate,Runtime,MovieType,GenreRefId")] NewmovieClass nmc)
  3. {
  4. if (ModelState.IsValid)
  5. {
  6. _db.Add(nmc);
  7. await _db.SaveChangesAsync();
  8. return RedirectToAction("Index");
  9. }
  10. return View(nmc);
  11. }
展开查看全部

相关问题