当用户从下拉列表中选择一个值时,我试图动态呈现局部视图。我已经走了很远,但无法弄清楚这最后一点。
这是View / Quiz / AddQuestion.cshtml文件
@model quizAppCodeFirst.ViewModels.QuestionTypes
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div>
Type @Html.DropDownList("QuestionTypes", ViewData["QuestionTypes"] as SelectList, new { @class = "form-control" })
<div id="partialPlaceHolder"> </div>
</div>
}
<script type="text/javascript" src="~/Scripts/jquery-3.3.1.min.js"></script>
<script type="Text/javascript">
$(function(){
$("#QuestionTypes").change(function(){
var stateId=$(this).val();
$("#partialPlaceHolder").load("@Url.Action("MyAction", "Quiz")/MCQ");
});
});
</script>
在QuizController.cs中,这是呈现部分内容的MyAction方法
public ActionResult MyAction(string id)
{
Type t = Type.GetType("quizAppCodeFirst.Quiz" + id);
return PartialView(viewName, t);
}
到目前为止,我已经成功渲染了部分视图,但是当我单击部分视图中的按钮时,它将重新加载javascript / MyAction方法。
编辑:为了清楚起见,我有一个主视图,即View / Quiz / AddQuestions.cshtml,当用户从下拉列表中选择MCQ时,我在其中调用了一个局部视图,即View / MCQ / AddMCQ.cshtml。 。局部视图(AddMCQ)可以很好地加载,并显示一个窗体以使用“创建”按钮添加MCQ,但是当我单击“创建”按钮时,它没有调用MCQController.cs / AddMCQ函数,而是调用了QuizController.cs / MyAction函数。 。我可以添加AddMCQ.cshtml的代码,但是我觉得这是不必要的,因为它可以正常工作。