保存并检索asp.net mvc3的复选框值

时间:2013-05-25 10:36:56

标签: asp.net-mvc-3

我是MVC3技术的新手,并试图通过我的方式解决一个小问题。  我只需要将选中的复选框值保存在数据库中,然后在修改视图中将其检查回来。

<input type="checkbox" value="Photo" name="DocSub" /> Photograph<br />
<input type="checkbox" value="BirthCertificate" name="DocSub" /> Copy Of Birth Certificate<br />
<input type="checkbox" value="School Leaving Certificate" name="DocSub" /> School Leaving Certificate<br />

单击“提交”按钮时,将调用所需控制器的 [HTTPPOST]操作方法。在那里,我以这种形式收到选定的值:

 var selectedCheckBoxValues = Request.Form["DocSub"];

我以逗号分隔的形式获取所有选中的复选框值并能够将它们存储到数据库中,但是想知道这是否是正确的方法。

另外,我需要知道从已检查过的表单中的编辑视图中检索数据库中的复选框值。

1 个答案:

答案 0 :(得分:2)

这些问题的典型应用是使用带模型的视图

即,假设这是查看Documents.cshtml

@model DocumentViewModel 

@Html.LabelFor(m => m.Photo)
@Html.CheckBoxFor( m => m.Photo )

@Html.LabelFor(m => m.BirthCertificate)
@Html.CheckBoxFor( m => m.BirthCertificate )

@Html.LabelFor(m => m.SchoolLeavingCertificate)
@Html.CheckBoxFor( m => m.SchoolLeavingCertificate )

并使用viewmodel将数据传递给视图

viewmodel是一个类,您可以在其中发送要发送到视图的数据,即

public class DocumentViewModel{
     public bool Photo {get;set;}
     public bool BirthCertificate { get; set; }
     public bool SchoolLeavingCertificate {get;set;}
}

并且你有一个控制器来填充视图模型并调用视图

    public ActionResult Documents()
    {
        var modelData = new DocumentViewModel(); 
         //or retrieve from database at this point
         // ie. modelData.Photo = some database value
        return View(modelData);
    }

    [HttpPost]
    public ActionResult Documents(DocumentViewModel documentsVM)
    {
        if (ModelState.IsValid)
        {
            //update the database record, save to database... (do stuff with documentsVM and the database)

            return RedirectToAction("NextAction");
        }
         //else, if model is not valid redirect back to the view

        return View(documentsVM);
    }

在mvc基础知识上寻找教程。阅读代码。