Получение значения от несвязанной бритвы ввода MVC3 - PullRequest
0 голосов
/ 01 марта 2012

Пожалуйста, прости меня, так как я только учусь MVC3.

У меня есть 2 дБ таблицы, одна для соревнований и одна для ответов.Для каждого соревнования будет 3 ответа, связанных с ним.

Мое представление Create строго соответствует моей модели соревнования.Что я хочу сделать, это добавить 3 несвязанных поля ввода в это представление и получить результаты в контроллере

Мой контроллер выглядит следующим образом

Function Create(competition As Competition) As ActionResult
  If ModelState.IsValid Then
    db.Competitions.AddObject(competition)
    db.SaveChanges()
    Return RedirectToAction("Index")
  End If
  ViewBag.ClientID = New SelectList(db.Clients, "ClientID", "ClientName", competition.ClientID)
  Return View(competition)
End Function

То, что я хотел бы сделать, это что-то вродеthis

Function Create(competition As Competition) As ActionResult
  If ModelState.IsValid Then
    'DIM ANSWERA AS STRING = INPUTA
    'DIM ANSWERB AS STRING = INPUTB
    'DIM ANSWERC AS STRING = INPUTC

    db.Competitions.AddObject(competition)
    db.SaveChanges()
    'SAVE ANSWERS TO ANSWER TABLE

    Return RedirectToAction("Index")
  End If
  ViewBag.ClientID = New SelectList(db.Clients, "ClientID", "ClientName", competition.ClientID)
  Return View(competition)
End Function

Извините, если я неправильно отформатировал вопрос.Надеюсь, вы понимаете суть того, что я пытаюсь сделать

спасибо

Я уже начал работать над этим, я хочу иметь возможность редактировать детали соревнования в представлении

   Function Edit(id As Integer) As ViewResult
        Dim competition As Competition = db.Competitions.Single(Function(c) c.CompetitionID = id)



       ViewBag.ClientID = New SelectList(db.Clients, "ClientID", "ClientName", competition.ClientID)
        Return View(competition)
    End Function

Итак, я создаю представление, которое возвращает мои данные о соревновании, но как мне добавить 3 поля ввода для отображения 3 ответов, связанных с этим соревнованием?

Ответы [ 2 ]

1 голос
/ 02 марта 2012

Request("NAME") будет искать NAME в качестве имени элемента формы, файла cookie, параметра строки запроса или серверных переменных.

Dim answerA as String = Request("answerA")
Dim answerB as String = Request("answerB")
Dim answerC as String = Request("answerC")

Чтобы быть в безопасности, вы, вероятно, должны специально нацелить элемент формы, называемый "answerA", используя:

Dim answerA as String = Request.Form("answerA")

но любой из двух приведенных выше примеров будет работать.

0 голосов
/ 01 марта 2012

MVC выполнит привязку за вас, если имя параметра контроллера соответствует имени входа. Так что если ваш HTML выглядит так:

<input type="text" name="answerA" />
<input type="text" name="answerB" />
<input type="text" name="answerC" />

тогда ваш контроллер может быть просто

Function Create(competition As Competition, answerA As string, answerB As string, answerC As string) As ActionResult

В качестве альтернативы вы можете использовать массив с именем answers и объявить поля ввода с именами, такими как answers[0], answers[1] и т. Д. *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...