如何在嵌套视图中显示两个editorFor

时间:2013-03-10 05:31:34

标签: asp.net-mvc asp.net-mvc-4

这是我的剃刀观点。重点是当我下拉值更改时,更新question-editor div。如您所见,我正在调用EditorFor

@model Contoso.MvcApplication.Models.Question.CreateQuestionViewModel

@{
    ViewBag.Title = "Create Open Question";
}

<h3>Create Question</h3>

<select id="question-type-dropdown" style="margin-bottom: 20px;">
    <option value="MC">Multiple Choice</option>
    <option value="O">Open Question</option>
</select>

@using (Html.BeginForm()) {
    @Html.ValidationSummary(true)

    <fieldset>
        @Html.HiddenFor(model => model.QuestionSetId)
        <legend>Question Template</legend>

        <div id="question-editor">
            @Html.EditorFor(model => model.Template, "_QuestionEditorBoxPartial")
        </div>

        <p>
            <input type="submit" value="Save" />
        </p>
    </fieldset>
}

这是局部视图,只包含一个EditorModelFor来选择它应该使用哪个viewtemplate。

_QuestionEditorBox(PartialView)

@model Contoso.Core.Base.QuestionTemplate

@ Html.EditorForModel(Contoso.Core.QuestionRepositoryManager.GetQuestionTemplateView(型号))

public abstract class Question
{
   public int Id {get;set;}
   public string QuestionText { get; set; }
}

public OpenQuestion : Question { ... }
public MultipleChoiceQuestion : Question { ... }

public class CreateQuestionViewModel
{
    public int QuestionSetId { get; set; }
    public QuestionTemplate Template { get; set; }
}

但是当我这样做时,它没有显示任何东西,因为我正在使用相同的模型进行两次编辑。我尝试用PartialView更改第一个EditorFor,但这不会起作用,因为我需要模型绑定器捕获我的模型。

0 个答案:

没有答案