Model view controller MVC:如何从我的数据库中获取数据,用viewmodel在dropdownlist中显示数据?

Model 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

这是我的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 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>