1

我一直在努力让 EditorFor 像这里描述的那样工作,但我一辈子都无法让我的版本正常工作。

我有两个 ViewModel:

面试视图模型

public class InterviewViewModel
{
    ...
    public List<QuestionViewModel> Questions { get; set; }
}

QuestionViewModel

public class QuestionViewModel
{
    public int QuestionId { get; set; }
    public string QuestionName { get; set; }
    ...
}

我尝试在两个地方创建 EditorTemplates,

/Views/Interview/EditorTemplates/QuestionViewModel.cshtml

/Views/Shared/EditorTemplates/QuestionViewModel.cshtml

两者似乎都没有做任何事情。

控制器代码:

public ActionResult MyClass(int id = 0)
    {
        using (RRContext db = new RRContext())
        {
            ...

            List<QuestionModel> questionModels = new List<QuestionModel>();
            questionModels = db.QuestionModels.ToList();

            ...

            viewModel.Questions = questionViewModels;

        return View(viewModel);
        }
    }

我的视图包含:

@model ResidentRank.Models.Interview.InterviewViewModel

... (html.beginform is here)
Html.EditorFor(model => model.Questions);      

编辑器模板代码:

@model ResidentRank.Models.Interview.QuestionViewModel
<div style="clear:both; margin:10px 0px;">
  <label>@Html.DisplayFor(m => m.QuestionName)</label>
  @Html.DropDownListFor(m => m.SelectedQuestionOption, Model.OptionSelector)
</div>

我脑海中盘旋的问题是“为什么这不起作用?!”

4

1 回答 1

2

在 HomeController

    [HttpGet]
    public ActionResult Display(int id = 0)
    {
        var questionViewModel = new InterviewViewModel {
            Questions =
                new List<QuestionViewModel>()
                {
                    //Hard coded values to represent data coming from db i.e db.QuestionModels.ToList();
                    new QuestionViewModel() {QuestionId = 1, QuestionName = "A"},
                    new QuestionViewModel() {QuestionId = 2, QuestionName = "B"}
                }
        };

        return View(questionViewModel);
    }

视图模型

  public class InterviewViewModel {
    public List<QuestionViewModel> Questions { get; set; }
  }

  public class QuestionViewModel {
    public int QuestionId { get; set; }
    public string QuestionName { get; set; }
  }

\Views\Home\Display.cshtml

  @model MvcApplication1.Models.Interview.InterviewViewModel

  @using (Html.BeginForm()) 
  {
      <fieldset>
         @Html.EditorFor(x => x.Questions)
         <input type="submit" value="Save" />
      </fieldset>
  } 

\Views\Shared\EditorTemplates\QuestionViewModel.cshtml

确保这是部分视图。

  @model MvcApplication1.Models.Questions.QuestionViewModel
  <div style="clear:both; margin:10px 0px;">
     <label>@Html.DisplayFor(m => m.QuestionName)</label>
  </div>

请注意,我删除了

  @Html.DropDownListFor(m => m.SelectedQuestionOption, Model.OptionSelector)

为了保持视图简单。

这显示..

在此处输入图像描述

于 2013-10-12T23:44:50.617 回答