1

我是 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] Action 方法。在那里,我收到了这种形式的选定值:

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

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

我还需要知道以已检查的形式从编辑视图中的数据库中检索复选框值。

4

1 回答 1

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 是一个类,您可以在其中拥有要发送到视图的数据,即。

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 基础知识的教程。阅读代码。

于 2013-05-25T20:52:11.913 回答