将数据从sql数据库拉入textfield

时间:2013-02-06 19:00:31

标签: c# asp.net-mvc-4

我有一个学生表,我想在个人资料页面上显示学生的名字,该名称存储在学生表中。

这就是我对我的控制器的想法:

public ActionResult StudentName(StudentModel model)
{
     if(ModelState.IsValid)
     {
        using (var db = new SchoolDataContext())
        {
            var result = from s in db.Students select s.StudentName;
            model.StudentName = result.ToString();
        }
     }
}

在我看来,我有:

@Html.LabelFor(s => s.StudentName)
@Html.TextBoxFor(s => s.StudentName)

我的模特:

public class StudentModel
{
    [Display(Name = "Student Name")]
    public string StudentName{ get; set; }
}

我需要一个get方法来获取学生名称以显示在文本框中,同时有一个post方法,以便在单击“保存”后在同一个框中更改时可以保存它。

1 个答案:

答案 0 :(得分:0)

可能你的控制器看起来像这样:

public ActionResult StudentName(int studentId)//you can't pass a model object to a get request
{
        var model = new StudentModel();
        using (var db = new SchoolDataContext())
        {
            //fetch your record based on id param here.  This is just a sample...
            var result = from s in db.Students
                         where s.id equals studentId 
                         select s.StudentName.FirstOrDefault();
            model.StudentName = result.ToString();
        }
     return View(model);
}

在上面的get中,您可以传入一个id,然后从数据库中获取记录。使用检索到的数据填充模型属性,并将该模型传递到视图中。

然后在下面的post操作中,您接受模型作为参数,检查模型状态,并处理数据。我在这里显示重定向,但您可以在帖子执行后返回您想要的任何视图。

[HttpPost]
public ActionResult StudentName(StudentModel model)
{
     if(ModelState.IsValid)
     {
        using (var db = new SchoolDataContext())
        {
            //update your db record
        }
        return RedirectToAction("Index");
     }
     return View(model);

}