在我的MVC应用程序“TwentyFifth”中,Model是:
public class Student {
public string StudentName { get; set; }
public int StudentID { get; set; }
public string FatherName { get; set; }
}
方法是同一项目中的支持类:
public void EditSupport(int id, Student std2)
{
SqlConnection Con = new SqlConnection("Data Source=my;Initial Catalog=DB;Integrated Security=True");
SqlCommand Com = new SqlCommand("update StudentT set StudentName='"+ std2.StudentName + "', FatherName='" + std2.FatherName + "' where StudentID=" + id + "", Con);
Con.Open();
Com.ExecuteNonQuery();
}
最后,Controller就像:
[HttpPost]
[ActionName("Edit")]
public ActionResult Edit_Post(int id, FormCollection formCollector)
{
Student std = new Student();
std.StudentID = id;
std.StudentName = formCollector["StudentName"].ToString();
std.FatherName = formCollector["FatherName"].ToString();
BussinessNdataLayer bl = new BussinessNdataLayer();
bl.EditSupport(id, std);
return RedirectToAction("Index");
}
问题:当我更改Controller时,为什么会出现格式异常 - >
std.StudentID = Convert.ToInt32(formCollector["StudentID"]);
注意:在断点处,我在std.StudentID中找到了字符串值但是使用了逗号(,)感谢您的回复。
答案 0 :(得分:0)
默认的模型绑定器将为您处理所有这些。尝试将代码更改为此,以便模型绑定器为您执行转换:
public ActionResult Edit_Post(int id, FormCollection formCollector, int StudentID)
{
...
std.StudentID = StudentID;
...
}
最好不要直接访问表单集合,而是使用强类型的ViewModels和action方法参数。