【发布时间】:2013-10-20 19:47:13
【问题描述】:
我一直在努力让 EditorFor 像 here 所述那样工作,但我这辈子都无法让我的版本正常工作。
我有两个 ViewModel:
InterviewViewModel
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>
我脑海中的问题是“为什么这不起作用?!”
【问题讨论】:
-
“为什么这不起作用?!”是什么意思你得到的实际错误是什么?
-
我没有收到错误;这是我在没有出现任何内容时添加的视图中的实际文本。这个想法是,如果我在页面上有一些其他逻辑导致它下面的 div 不显示,那么该文本会。
-
实际上它对我有用。我很快就会发布我的解决方案。
-
这应该有效,正如 Raj 所示,它对他有效。这意味着您的代码中有一些您没有向我们展示的可能会干扰事物的东西。我建议你开始简化你的代码,直到你可以得到一个完整的示例,你可以发布它仍然对你有问题(不是一个你编辑掉东西的示例,就像你在这里所做的那样)。很有可能,在简化的同时,你会发现它突然起作用了。然后你需要回溯并弄清楚你删除了什么。
-
在编辑器模板中你有 QuestionViewModel 但在控制器中 questionModels = db.QuestionModels.ToList(); ... viewModel.Questions = questionViewModels;是一个列表。所以它不会使用模板