Мое требование - создать мастер экзаменационной анкеты.Шаги в мастере будут создаваться динамически. Существуют некоторые основные шаги, которые будут общими для некоторых кандидатов, таких как языковые настройки и т. Д. Вопросы будут создаваться в зависимости от типа экзамена, выбранного кандидатом.В каждом вопроснике будет не менее 25–35 вопросов, что означает 35–45 шагов на мастера.Я не могу сохранить ответы в базе данных.Это должно быть в сеансе, и я не могу использовать скрипт Java.
Пользователь должен иметь легкий доступ.он может начать отвечать на экзамен в любом порядке.
Мой подход состоял в том, чтобы создавать пользовательские элементы управления для основных шагов (таких как язык, инструкция и вопрос) и вызывать их на странице по мере нажатия на ссылку.Я только что поместил образец изображения из моего тестового проекта.
Поскольку вопросы выбираются динамически в зависимости от кандидата, я извлекаю все вопросы, создаю список и отображаю его с помощью пошагового управления пользователями Вопроса.
Я много раз создавал мастеров в asp.net, но не в MVC, поэтому у меня есть некоторые сомнения.
Проблемы или проблемы:
Кнопка навигации: NEXT и Previous.Могу ли я поместить его на странице ASPX вместо каждой страницы управления пользователем.
Предположим, что пользователь выбрал одну ссылку, например, скажем, например, для вопроса 1, он ввел ответ и нажал на другую ссылку или кнопку СЛЕДУЮЩИЙ, как я получуобновленный объект с ответом, выбранным пользователем.Поскольку ссылка не имеет действия после публикации.
Если вы, ребята, можете предложить несколько способов достижения этого, это будет очень полезно.
Ниже показана моя страница aspx:
<%@ Page Language="VB" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage(Of MVCApp.WizardVM)" %>
<%@ Import Namespace ="MVCApp" %>
<asp:Content ID="indexTitle" ContentPlaceHolderID="TitleContent" runat="server">
Home Page
</asp:Content>
<asp:Content ID="indexContent" ContentPlaceHolderID="MainContent" runat="server">
<% Using Html.BeginForm("Index", "Home")%>
<table>
<tr>
<td>
<div id="menu" class="block">
<ul id="menuItems">
<% For Each item As MVCApp.MenuVM In Model.menus%>
<li><%: Html.ActionLink(item.Description, "Index", "Home", New With {item.ID}, Nothing)%></li>
<%Next%>
</ul>
</div>
</td>
<td>
<% Html.RenderPartial(Model.UserControlName, Model.Model)%>
</td>
</tr>
<tr>
<td colspan=2 align="right">
<input type="submit" value="Next" />
<input type="submit" value="Previous" />
</td>
</tr>
</table>
<% End Using %>
</asp:Content>
Класс контроллера:
Public Class HomeController
Inherits System.Web.Mvc.Controller
Function Index() As ActionResult
Dim oWizard As New WizardVM
oWizard = GetData()
If (ControllerContext.RouteData.Values.Count > 2) Then
If (ControllerContext.RouteData.Values.Item("ID") = 1) Then
oWizard.UserControlName = "language"
oWizard.Model = oWizard.Language
ElseIf (ControllerContext.RouteData.Values.Item("ID") = 3) Then
oWizard.UserControlName = "Question"
oWizard.Model = oWizard.Question
End If
Else
oWizard.UserControlName = "language"
oWizard.Model = oWizard.Language
End If
Return View("index", oWizard)
End Function
Function About() As ActionResult
Return View()
End Function
Public Function GetData() As WizardVM
Try
Dim oWizard As New WizardVM
Dim oLanaguage As New LanguageVM
oLanaguage.Description = "This is a language test screen."
oWizard.Language = oLanaguage
Dim oQuestion As New QuestionVM
oQuestion.Description = "This is a Question test screen."
oWizard.Question = oQuestion
Dim oMenus As New List(Of MenuVM)
Dim oMenuHelper As New MenuHelper
oMenus = oMenuHelper.BuildMenu()
oWizard.menus = oMenus
Return oWizard
Catch ex As Exception
Throw ex
End Try
End Function
<HttpPost()>
Function GetLanguageInfo(ByVal oLanguage As LanguageVM) As ActionResult
Dim a As Integer
a = 10
Return View("index")
End Function
Классы просмотра моей модели
Public Class WizardVM
Public Property SelectedMenuId As Integer
Public Property Language As LanguageVM
Public Property Question As QuestionVM
Public menus As List(Of MenuVM)
Public Property UserControlName As String
Public Property Model As Object
End Class
Language Model View Class
Public Class LanguageVM
Public Property Description As String
End Class
Вопрос ModelView Class
Public Class QuestionVM
Public Property Description As String
End Class
UserControls:
ЯЗЫК
<%@ Control Language="VB" Inherits="System.Web.Mvc.ViewUserControl(of MVCApp.LanguageVM)" %>
<form method="post" action="/Home/GetLanguageInfo">
<p>Description
<%= Html.TextBoxFor(Function(model) model.Description)%>
</p>
</form>
Так же, как я создал для вопроса.Я не могу использовать JavaScript, поэтому мне придется заменить ссылки на кнопки.но как я буду обрабатывать объект сообщения.