Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 4 isn的编辑器';t在MVC4中使用EditorTemplate_Asp.net Mvc 4_Editorfor - Fatal编程技术网

Asp.net mvc 4 isn的编辑器';t在MVC4中使用EditorTemplate

Asp.net mvc 4 isn的编辑器';t在MVC4中使用EditorTemplate,asp.net-mvc-4,editorfor,Asp.net Mvc 4,Editorfor,我一直在拼命想让Editor按我所说的那样工作,但我一辈子都不能让我的版本工作 我有两个视图模型: 访谈模式 public class InterviewViewModel { ... public List<QuestionViewModel> Questions { get; set; } } 我尝试在两个地方创建EditorTemplates /视图/访谈/编辑模板/问题视图模型.cshtml 及 /Views/Shared/EditorTemplates/Q

我一直在拼命想让Editor按我所说的那样工作,但我一辈子都不能让我的版本工作

我有两个视图模型:

访谈模式

public class InterviewViewModel
{
    ...
    public List<QuestionViewModel> Questions { get; set; }
}
我尝试在两个地方创建EditorTemplates

/视图/访谈/编辑模板/问题视图模型.cshtml

/Views/Shared/EditorTemplates/QuestionViewModel.cshtml

两人似乎都没有做任何事

控制器代码: 编辑模板代码:
@model ResidentRank.Models.Interview.QuestionViewModel
@DisplayFor(m=>m.QuestionName)
@Html.DropDownListFor(m=>m.SelectedQuestionOption,Model.OptionSelector)
我脑海中萦绕的问题是“为什么这不起作用?!”在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);
    }
为了保持视图的简单性

这显示


你所说的“为什么这不起作用?!”是什么意思?你得到的实际错误是什么?我没有得到错误;这是我在没有显示任何内容时添加的视图中的实际文本。这个想法是,如果我在页面上有一些其他的逻辑导致它下面的div不显示,那么这个文本就会显示出来。事实上,它对我很有用。我很快就会发布我的解决方案。这应该行得通,正如拉杰所展示的,这对他来说是行得通的。这意味着您在代码中有一些您没有向我们展示的东西,可能会干扰事情。我建议你开始简化你的代码,直到你可以得到一个完整的样本,你可以发布仍然有问题(不是一个样本,你编辑出来的东西,像你在这里做的)。机会是,在简化的同时,你会发现它突然起作用。然后您需要回溯并找出删除的内容。在编辑器模板中有QuestionViewModel,但在控制器中有questionModels=db.questionModels.ToList()。。。viewModel.Questions=questionViewModels;这是一份清单。所以它不会使用模板,我可以得到一个过于简化的版本。仍在努力使其中包含实际数据的设备正常运行。感谢您的帮助。问题是我在Html.BeginForm元素中声明了Html.EditorFor,但没有立即使用“@”。我在想它当时处于“代码模式”的开头括号中…显然不是。添加@并将其包装到字段集中修复了该问题。
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>
    [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; }
  }
  @model MvcApplication1.Models.Interview.InterviewViewModel

  @using (Html.BeginForm()) 
  {
      <fieldset>
         @Html.EditorFor(x => x.Questions)
         <input type="submit" value="Save" />
      </fieldset>
  } 
  @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)