在EditorFor和DisplayFor之间切换

Mar*_*naL 4 asp.net-mvc razor

我有一个局部视图,它被设置为一个表格/网格显示来自数据库的记录 - 我可以轻松地显示该行的显示或编辑器模板,但是如何切换行displayForeditorFor我点击和编辑时保存链接?

<div id="compQuestionListContainer">
    <div class="divQuestionItems">
        <div class="divQuestionItemsHeaderRow">
            <div class="QuestionHeader">Question Type</div>
            <div class="QuestionHeader question-name">Question Name</div>
            <div class="QuestionHeader question-required">Required</div>
            <div class="QuestionHeader question-group">Question Group</div>
            <div class="QuestionHeader">Modified By</div>
            <div class="QuestionHeader">Modified Date</div>
            <div class="QuestionHeader question-edit">Edit</div>
            <div class="QuestionHeader question-delete">Delete</div>
        </div>
        <div class="divOrderItemsBody">
            @Html.EditorFor(m => m.CompetitionQuestionList)
            @Html.DisplayFor(m => m.CompetitionQuestionList)
        </div>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

the*_*000 6

你可以在Razor做这样的事情:

@{
   if (someCondition)
   {
      Html.EditorFor(m => m.CompetitionQuestionList);
   }
   else
   {
      Html.DisplayFor(m => m.CompetitionQuestionList);
   }
}
Run Code Online (Sandbox Code Playgroud)

更新

如果您尝试根据用户操作从一个视图更改为另一个视图,则必须采用其他方法.

例如,您可以在视图中渲染两者:

<div id="editor" style="display:none;">
    Html.EditorFor(m => m.CompetitionQuestionList)
</div>
<div id="display">
    Html.DisplayFor(m => m.CompetitionQuestionList)
</div>
Run Code Online (Sandbox Code Playgroud)

然后,在您的客户端代码中(假设您加载jQuery),您可以执行以下操作:

$("#editor").show();
$("#display").hide();
Run Code Online (Sandbox Code Playgroud)

显示切换到编辑.