Model view controller MVC:如何从我的数据库中获取数据,用viewmodel在dropdownlist中显示数据?
这是我的ViewmodelModel view controller MVC:如何从我的数据库中获取数据,用viewmodel在dropdownlist中显示数据?,model-view-controller,drop-down-menu,viewmodel,Model View Controller,Drop Down Menu,Viewmodel,这是我的Viewmodel public class IndexViewModel { public string QuestionText { get; set; } public string Sname { get; set; } public string Cname { get; set; } public int CID { get; set; } public int SID { get; set; } public Question
public class IndexViewModel
{
public string QuestionText { get; set; }
public string Sname { get; set; }
public string Cname { get; set; }
public int CID { get; set; }
public int SID { get; set; }
public Question question { get; set; }
public CoreValue corevalue { get; set; }
public SubjectType subjecttype { get; set; }
}
在我看来,我有一些问题,这些代码不起作用:
@model NKI3.ViewModels.IndexViewModel
@using (Html.BeginForm()) {
<fieldset>
<div class="editor-label">
@Html.DropDownListFor(model => model.Sname)
</div>
</fieldset>
}
@model NKI3.ViewModels.IndexViewModel
@使用(Html.BeginForm()){
@DropDownListFor(model=>model.Sname)
}
我得到的错误消息是“没有重载方法'DropDownListFor takes 1参数”
解决办法是什么
谢谢 您没有传入将填充下拉列表的列表请参见下面的示例
@Html.DropDownListFor(model => model.Sname, ((IEnumerable<SNameList>)ViewBag.ListofSName).Select(option => new SelectListItem
{
Text = (option == null ? "None" : option.Description),
Value = option.Id.ToString(),
Selected = (Model != null) && (option.Id == Model.SName)
}), "Choose...", new { @class = "full-width" })
@Html.DropDownListFor(model=>model.Sname,((IEnumerable)ViewBag.listofName)。选择(选项=>new SelectListItem
{
Text=(option==null?“无”:option.Description),
Value=option.Id.ToString(),
所选=(Model!=null)&&(option.Id==Model.SName)
}),“选择…”,新建{@class=“全宽”})
在本例中,我将使用要填充下拉列表的列表填充控制器中的ViewBag.ListOfName。请注意,问题是如果回发中有任何验证,但验证失败,则需要重新填充ViewBag
我希望这能有所帮助。公共类AdminController:Controller
public class AdminController : Controller
{
AdminRepository AdminRep = new AdminRepository();
public ActionResult Index()
{
List<Question> ListQuestions = AdminRep.GetAllQuestions();
var model = new AdminIndexViewModel();
model.QuestionList = new List<QuestionViewModel>();
foreach (var item in ListQuestions)
{
var QuestionViewModel = new QuestionViewModel();
model.QuestionList.Add(QuestionViewModel);
QuestionViewModel.QuestionText = item.QuestionText;
QuestionViewModel.QuestionId = item.Id;
QuestionViewModel.CoreValues = new List<string>();
foreach (var CoreValues in item.CoreValue)
{
QuestionViewModel.CoreValues.Add(CoreValues.Name);
}
QuestionViewModel.SubjectTypes = new List<string>();
foreach (var SubjectType in item.SubjectType)
{
QuestionViewModel.SubjectTypes.Add(SubjectType.Name);
}
}
return View(model);
}
{
AdminRepository AdminRep=新建AdminRepository();
公共行动结果索引()
{
List ListQuestions=AdminRep.GetAllQuestions();
var模型=新的AdminIndexViewModel();
model.QuestionList=新列表();
foreach(列表问题中的var项)
{
var QuestionViewModel=新的QuestionViewModel();
model.QuestionList.Add(QuestionViewModel);
QuestionViewModel.QuestionText=item.QuestionText;
QuestionViewModel.QuestionId=项.Id;
QuestionViewModel.CoreValues=新列表();
foreach(item.CoreValue中的var CoreValue)
{
QuestionViewModel.CoreValues.Add(CoreValues.Name);
}
QuestionViewModel.SubjectTypes=新列表();
foreach(item.SubjectType中的变量SubjectType)
{
QuestionViewModel.SubjectTypes.Add(SubjectType.Name);
}
}
返回视图(模型);
}
视图:
@foreach(Model.QuestionList中的变量项){
@DisplayFor(modelItem=>item.QuestionText)
@string.Join(“,”,item.SubjectTypes)
@string.Join(“,”,item.CoreValues)
@ActionLink(“编辑”,新的{id=item.QuestionId})|
@ActionLink(“删除”,新的{id=item.QuestionId})
@foreach (var item in Model.QuestionList) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.QuestionText)
</td>
<td>
@string.Join(", ", item.SubjectTypes)
</td>
<td>
@string.Join(", ", item.CoreValues)
</td>
<td>
@Html.ActionLink("Edit", new { id = item.QuestionId}) |
@Html.ActionLink("Delete", new { id = item.QuestionId })
</td>
</tr>