asp.net mvc: создать список с помощью formcollection - PullRequest
0 голосов
/ 19 августа 2011

Я вижу текущую ошибку в моем представлении:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master"  Inherits="System.Web.Mvc.ViewPage<ProjectenII.Models.Domain.StudentModel>"%>

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
    IndexStudents
</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
    <h2>IndexStudents</h2>

  <%using (Html.BeginForm()) { %>
    <%=Html.ListBoxFor(model => model.NormalSelected, new MultiSelectList(Model.NormalStudentsList, "StudentNummer", "Naam", Model.NormalSelected), new { size = "6" }); %>

    <input type="submit" name="add" 
                          id="add" value=">>" /><br />
    <input type="submit" name="remove" 
                          id="remove" value="<<" />
    <%=Html.ListBoxFor(model => model.NoClassSelected, new MultiSelectList(Model.StudentsNoClassList, "StudentNummer", "Naam", Model.NoClassSelected)); %>
  <% } %>

  <%=Html.HiddenFor(model => model.Save) %>
  <input type="submit" name="apply" id="apply" value="Save!" />
</asp:Content>

Это дает мне ошибку в методе listboxfor () ... говоря ") ожидается".

Но я закрываю все открывающие теги ... хотя и очень странно! Для чего я хочу его использовать: я хочу переместить элементы из одного списка в другой, а затем обновить базу данных. Так что я хотел бы сделать это с помощью formCollection, если нет другого способа?

У студентов есть поле с именем "classID", когда я обновляю базу данных, это значение необходимо изменить с текущего значения на "0". Я думаю, что лучший способ - это использовать formCollections? Не так ли? Это моя ученическая модель

   public class StudentModel
    {
        public IEnumerable<Student> NormalStudentsList { get; set; }
        public IEnumerable<Student> StudentsNoClassList { get; set; }
        public string[] NormalSelected { get; set; }
        public string[] NoClassSelected { get; set; }
        public string Save { get; set; }
    }

Контроллер:

 public ActionResult IndexStudents(Docent docent, int id, int klasgroepid)
        {
            var studentModel = new StudentModel
            {
               NormalStudentsList = docent.GeefStudenten(id, klasgroepid),
               StudentsNoClassList = docent.GeefStudenten(id, klasgroepid)
            };

            return View(studentModel);
        }

У меня два вопроса: как я могу исправить ошибку? И как я могу обновить базу данных?

Я предлагаю использовать "UpdateModel ()" ...?

Заранее спасибо !!

1 Ответ

1 голос
/ 20 августа 2011

Не уверен, что ваш второй вопрос, потому что вы не включили код, который вы используете для сохранения вашей модели в базе данных.

")" ожидаемая ошибка, потому что у вас точка с запятой вконец вызова метода ListBoxFor.

Он должен выглядеть следующим образом:

<%=Html.ListBoxFor(model => model.NormalSelected, new MultiSelectList(Model.NormalStudentsList, "StudentNummer", "Naam", Model.NormalSelected), new { size = "6" }) %>

Когда вы используете <% =, вам не нужна точка с запятой. </p>

...