请原谅我,因为我只是在学习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")
但是以上两个示例中的任何一个都将起作用。
<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]
等名称声明输入字段。