我有一个学生表,我想在个人资料页面上显示学生的名字,该名称存储在学生表中。
这就是我对我的控制器的想法:
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方法,以便在单击“保存”后在同一个框中更改时可以保存它。
答案 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);
}