【问题标题】:Getting value from unbound input razor MVC3从未绑定的输入剃须刀 MVC3 中获取价值
【发布时间】:2012-03-03 02:09:30
【问题描述】:

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

我有 2 个分贝表,一张用于比赛,一张用于回答。每场比赛将有 3 个与之相关的答案。

我的创建视图是强类型化到我的竞争模型的。我想要做的是向该视图添加 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 个答案?

【问题讨论】:

    标签: asp.net-mvc-3 razor


    【解决方案1】:

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

    但上述两个示例中的任何一个都可以。

    【讨论】:

    • 感谢布拉德重新格式化我的帖子。感谢 Matt 和 bhamlin 的答案都有效
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-28
      • 1970-01-01
      • 2011-11-28
      • 2022-01-16
      相关资源
      最近更新 更多