什么样的模型&;如果我想要数据库中的动态下拉列表,我应该在ASPMVC3中使用控制器
本文关键字:我应该 ASPMVC3 控制器 下拉列表 动态 amp 如果 我想要 什么样 数据库 模型 | 更新日期: 2023-09-27 18:28:44
我已经为这个解决方案找了好几个小时了。
我有三种型号的自动取款机。
优先级:
using System;
using System.Collections.Generic;
namespace IssueReportManagementTest.Models
{
public class Priority
{
public int ID { get; set; }
public string Name { get; set; }
}
}
类别:
using System;
using System.Collections.Generic;
namespace IssueReportManagementTest.Models
{
public class Category
{
public int ID { get; set; }
public string Name { get; set; }
}
}
问题是,我有一个Issue模型,我想要其他模型的动态下拉列表。
发布
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
namespace IssueReportManagementTest.Models
{
public class Issue
{
[Key]
public int IssueID { get; set; }
public DateTime Added { get; set; }
public DateTime Modiefied { get; set; }
public virtual Category Category { get; set; }
public IEnumerable<Category> Categories { get; set; }
public virtual Priority Priority { get; set; }
public IEnumerable<Category> Priorities { get; set; }
[Required]
public string Title { get; set; }
[Required]
[DataType(DataType.MultilineText)]
public string Description { get; set; }
}
}
这是正确的吗?如果我想从优先级和类别中获得下拉列表,我需要在控制器中做什么。是的,它们存储在数据库中。
在Issue类中,您有Priority&类别,但您还需要每个(使用int)的外键
然后,您可以通过SelectList&DropDownListFor。
如果你需要一个代码示例,请告知,我会发布一些内容。
编辑
将FK添加到问题类中
public class Issue
{
[Key]
public int IssueID { get; set; }
public DateTime Added { get; set; }
public DateTime Modiefied { get; set; }
public int PriorityID { get; set; }
public int CategoryID { get; set; }
我使用ViewBag来填充DDL,如下所示:
ViewBag.Genre = new SelectList(db.Genres, "GenreId", "GenreName", Model.GenreId);
Model(Issue)是您传递给View的内容,我使用ViewBag来放置DDL,因为它不是您模型的一部分,您只对在模型中设置CategoryID感兴趣
然后在你看来:
<tr>
<td>@Html.LabelFor(m => m.GenreId)
</td>
<td>
@Html.DropDownListFor(m => m.GenreId, (SelectList)ViewBag.Genre, new { @class = "ddl" })
@Html.ValidationMessageFor(m => m.GenreId)
</td>
</tr>
这是我从场景中获得的内容,您可以修改和调整它以适应您的代码。
在我的视图中,我有一个显示不同银行的下拉列表。
我从数据库中设置下拉列表值的操作方法:
public ActionResult MyActionMethod()
{
MyViewModel viewModel = new MyViewModel
{
Banks = bankRepository.GetAll()
}
return View(viewModel);
}
这就是我的视图模型(只是部分视图):
public class MyViewModel
{
public int BankId { get; set; }
public IEnumerable<Bank> Banks { get; set; }
}
这是我的银行等级:
public class Bank
{
public int Id { get; set; }
public string Name { get; set; }
public bool IsActive { get; set; }
}
这是我在视图中的下拉代码:
<td>Bank:</td>
<td>
@Html.DropDownListFor(
x => x.BankId,
new SelectList(Model.Banks, "Id", "Name", Model.BankId),
"-- Select --"
)
@Html.ValidationMessageFor(x => x.BankId)
</td>
我希望这能有所帮助。它没有做任何花哨的事情,只是填充了一个下拉列表。如果你需要更多的澄清,大声呼喊。
看看本教程(相当不错),这里有Prefix.db 的下拉菜单示例