0

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

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

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 方法,以便在单击保存后在同一个框中更改时可以保存它。

4

1 回答 1

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

}
于 2013-02-06T19:46:52.030 回答