正在从未绑定的输入剃刀MVC3中获取值



请原谅我,因为我只是在学习MVC3。

我有两个数据库表,一个用于竞赛,一个用来回答。对于每一场比赛,都会有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

我想做的是像这个

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个答案?

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")

但是以上两个示例中的任何一个都将起作用。

如果控制器参数名称与输入名称匹配,则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]等名称声明输入字段。

最新更新