Я новичок-разработчик, пытающийся разработать веб-приложение с asp .net mvc 5 для личного использования. Сайт вроде викторины, в которую я могу вставить русские слова со значениями и подготовить викторину, используя эти слова.
Когда я пытался закодировать страницу викторины и опубликовать данные методом действия, я столкнулся с проблемой, которую не мог обойти. Я перебрал модель, прочитал данные и записал их на страницу. Теперь, что я хочу сделать, когда я отправляю форму, я хочу получить каждую строку вопроса и выбранный ответ (возможно, в этом формате: imgur.com/QETnafx). Поэтому я легко могу проверить строку ответа, верна она или нет.
Я ознакомился со следующими руководствами: «Привязка модели к списку» Фила Хаака и «Проводной формат ASP.NET для привязки модели к массивам, спискам, коллекциям, словарям» Скотта Хансельмана.
Надеюсь понятно объяснил ситуацию. Если вам нужна дополнительная информация, я могу с радостью предоставить.
Модель представления
public class QuizInitializationModel
{
public List<Question> Questions { get; set; }
}
public class QuestionString
{
public int Id { get; set; }
public string WordString { get; set; }
}
public class Question
{
public QuestionString QuestionString { get; set; }
public List<AnswerItem> Answers { get; set; }
}
public class AnswerItem
{
public int Id { get; set; }
public string WordString { get; set; }
}
ПОСМОТРЕТЬ
@using (Html.BeginForm("Begin", "Quiz", FormMethod.Post))
{
<table class="table table-striped table-condensed table-bordered">
@for (int i = 0; i < Model.Questions.Count; i++)
{
<tr>
<td>
@Html.Label(Model.Questions[i].QuestionString.WordString)
</td>
<td>
@for (int item = 0; item < Model.Questions[0].Answers.Count; item++)
{
@Html.Label(Model.Questions[i].Answers[item].WordString)@:
@Html.RadioButton("array" + "[" + @i + "]" + "." + Model.Questions[i].QuestionString.WordString, Model.Questions[i].Answers[item].Id)<br />
}
</td>
</tr>
}
</table>
<input type="submit" value="Send" class="btn btn-primary" />
}
ВЫВОД
<form action="/Admin/Quiz/Begin" method="post">
<table class="table table-striped table-condensed table-bordered">
<tr>
<td>
<label for="">вулкан</label>
</td>
<td>
<label for="trade">trade</label>
<input id="array_0________" name="array[0].вулкан" type="radio" value="18" /><br />
<label for="volcano">volcano</label>
<input id="array_0________" name="array[0].вулкан" type="radio" value="24" /><br />
<label for="talk__conversation">talk, conversation</label>
<input id="array_0________" name="array[0].вулкан" type="radio" value="15" /><br />
<label for="time">time</label>
<input id="array_0________" name="array[0].вулкан" type="radio" value="13" /><br />
<label for="income">income</label>
<input id="array_0________" name="array[0].вулкан" type="radio" value="21" /><br />
</td>
</tr>
<tr>
<td>
<label for="">мама</label>
</td>
<td>
<label for="universe">universe</label>
<input id="array_1______" name="array[1].мама" type="radio" value="25" /><br />
<label for="peace">peace</label>
<input id="array_1______" name="array[1].мама" type="radio" value="2" /><br />
<label for="value">value</label>
<input id="array_1______" name="array[1].мама" type="radio" value="20" /><br />
<label for="mom__mama">mom, mama</label>
<input id="array_1______" name="array[1].мама" type="radio" value="17" /><br />
<label for="industry">industry</label>
<input id="array_1______" name="array[1].мама" type="radio" value="19" /><br />
</td>
</tr>
</table>
И как я могу исправить идентификаторы меток типа «массив
public class QuizInitializationModel
{
public List<Question> Questions { get; set; }
}
public class QuestionString
{
public int Id { get; set; }
public string WordString { get; set; }
}
public class Question
{
public QuestionString QuestionString { get; set; }
public List<AnswerItem> Answers { get; set; }
}
public class AnswerItem
{
public int Id { get; set; }
public string WordString { get; set; }
}
_____»? Они появились, когда я добавил этот код "array" + "[" + @i + "]" + "." в элемент управления RadioButton с целью присвоения индекса каждому ответу.
id
не проблема. Это атрибутname
, который отправляет обратно, и в настоящее время ваши имена не имеют отношения к свойству модели, поэтому не будут связываться. - person   schedule 05.02.2015[
,.
и]
и недопустимые символы символами подчеркивания. - person   schedule 05.02.2015id
- это не имеет значения - person   schedule 05.02.2015QuizInitializationModel
не содержит свойства с именемarray
! Вам нужно свойство для привязки. Вскоре я опубликую ответ, но я не уверен в вашем комментарии проверьте строку ответа, верна она или нет. У вас есть свойство, указывающее, правильный ответ или нет? - person   schedule 05.02.2015