【问题标题】:MVC 3 Checkbox to DatabaseMVC 3 复选框到数据库
【发布时间】:2012-08-14 20:10:50
【问题描述】:

我希望创建一个带有下拉框的视图,其中列出了数据库表中的编程语言。这我没有问题,但我还想要 10 个复选框,称为 1 级到 10 级。现在这 10 个级别已经在数据库中的一个单独的表中,每个都有自己的 id 等。

我的问题是,如何创建一个页面,让您选择一种语言,然后选择 2 级和 3 级,然后将它们添加到另一个具有外键的数据库表中语言和级别表?一开始我知道这听起来很简单,但我需要创建一个控制器来检查检查了哪些级别并添加它们。复杂的部分是每种语言都有不同的技能范围,并非都是从 1 开始到 10 结束。

以下是表格示例:

语言 ID 语言名称

关卡 ID 关卡名称

映射的 ID 语言ID 级别 ID。

谢谢!

【问题讨论】:

  • 没什么,因为我不知道如何实现控制器。所以我想我在这里问一些想法。我是 MVC 和 C# 的新手,到目前为止,我只做过诸如下拉列表和自动完成文本框之类的事情。
  • 如果你是 MVC 新手,你可以从这里开始:asp.net/mvc 阅读一些教程,观看一些视频,尝试一些东西。然后在这里展示您尝试过的内容,以便我们有一个共同的讨论基础,看看我们如何帮助您改进代码并实现某些方面。
  • 我看过那里的教程,但似乎没有一个是关于我需要的。所有在线帮助仅指复选框的标准用法。
  • 别指望得到你需要的确切代码。由你来写。您应该做的是学习这些概念,以便能够自己编写此代码。
  • 那么,您尝试过什么?您可能想与我们分享一些代码?没有代码 => 没有帮助。

标签: c# asp.net-mvc checkbox data-persistence


【解决方案1】:

您需要为每个实体创建模型。然后,在您的控制器中,将模型发送到视图,如下所示:

'
' GET: /MyController/MyAction

Public Function MyAction() As ActionResult
    Dim db = New LanguageDbContext
    ViewBag.Language = New SelectList(db.Languages, "LanguageId", "Name")

    Dim db1 = New LevelsDbContext
    ViewBag.level = New SelectList(db1.Levels, "LevelId", "Name")
    Return View()
End Function

然后,您需要从 POST 的视图中获取模型,如下所示:

'
' POST: /MyController/MyAction

<HttpPost()> _
Public Function MyAction(ByVal model As MyModel) As ActionResult
    If ModelState.IsValid Then
         ' update your database by accessing model like this
            Dim db As Languages = New LanguageDbContext
            Dim language As New Language
            language.Name = model.Name

            db.Languages.Add(language)
            db.SaveChanges()
     End if
 End Function

当然,在 http://asp.net/mvc 阅读 mvc

【讨论】:

  • 是的,我已经使用下拉列表将内容添加到数据库中。一切正常。我的问题是有名为 5 级到 8 级的复选框,然后添加它们。我是否需要一个 for each 循环遍历选定的循环,然后手动添加文本说 Level 和复选框的 Id?
  • 就像我展示的那样,我将为您的所有复选框创建一个模型并将它们发送到视图。您还可以使用 for each 循环创建复选框列表并将列表发送到您的视图。
  • 啊对了,所以当你选择选中的框时,它会使用视图模型来获取选中的关卡的ID?谢谢
猜你喜欢
  • 1970-01-01
  • 2011-08-23
  • 2012-03-02
  • 1970-01-01
  • 2020-02-20
  • 1970-01-01
  • 2017-03-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多