如何解决 NullReferenceException
本文关键字:NullReferenceException 解决 何解决 | 更新日期: 2023-09-27 17:56:45
可能的重复项:
什么是 .NET 中的 NullReferenceException?
我是 MVC 的初学者,我尝试添加一个下拉列表以使用 sql 查询将其所选值保存在数据库中,但我的代码抛出了一个NullReferenceException
。
谁能帮我?
这是模型
public class caradvert
{
[Required]
public SelectList GearType { get; set; }
public int Selected { get; set; }
public caradvert()
{
List<SelectListItem> listItems = new List<SelectListItem>();
listItems.Add(new SelectListItem()
{
Value = "0",
Text = "اتوماتيك "
});
listItems.Add(new SelectListItem()
{
Value = "1",
Text = "عادي"
});
GearType = new SelectList(listItems, "Value", "Text");
}
public int CreatAdvert(int userid)
{
SqlConnection objConn = new SqlConnection("Data Source=ADMIN-PC;Initial Catalog=mvc4advertisment;Integrated Security=True");
SqlCommand objCmd = new SqlCommand();
objCmd.CommandType = CommandType.Text;
objCmd.CommandText = "insert into Mercedes(Model,GearType,color,EngineCapacity,CarDescription,Price,Image1Url,Image2Url,Image3Url,Userid,State) values('1','" + GearType.SelectedValue.ToString() + "','r','221','ddd','2','ss','ss','ss','1','False')";
objCmd.Connection = objConn;
objConn.Open();
int count = (int)objCmd.ExecuteNonQuery();
objConn.Close();
return count;
}
}
这是控制器
[HttpGet]
public ActionResult CreateAdvert()
{
caradvert model = new caradvert();
List<SelectListItem> listItems = new List<SelectListItem>();
listItems.Add(new SelectListItem()
{
Value = "1",
Text = "اتوماتيك "
});
listItems.Add(new SelectListItem()
{
Value = "1",
Text = "عادي"
});
model.GearType = new SelectList(listItems, "Value", "Text");
return View(model);
}
[HttpPost]
public ActionResult CreateAdvert(caradvert model )
{
int _records = model.CreatAdvert(1);
if (_records > 0)
{
return RedirectToAction("Index", "Account");
}
else
{
ModelState.AddModelError("", "لا يمكنك اضافة اعلان");
}
return View(model);
}
这是视图
<%:Html.DropDownListFor(m=>m.Selected,Model.GearType,") %>
很可能此语句中的GearType
或GearType.SelectedValue
为空。
objCmd.CommandText = "insert into Mercedes(Model,GearType,color,EngineCapacity,CarDescription,Price,Image1Url,Image2Url,Image3Url,Userid,State) values('1','" + GearType.SelectedValue.ToString() + "','r','221','ddd','2','ss','ss','ss','1','False')";
在此行:
objCmd.CommandText = "insert into Mercedes(Model,GearType,color,EngineCapacity,CarDescription,Price,Image1Url,Image2Url,Image3Url,Userid,State) values('1','" + GearType.SelectedValue.ToString() + "','r','221','ddd','2','ss','ss','ss','1','False')";
- 如果齿轮类型未初始化或为空
- 如果 GearType.SelectedValue 为空
GearType.SelectedValue.ToString() 可以抛出异常,例如未设置为对象实例的引用。
为了使问题更清晰,您可以在此行之前控制GearType和GearType.SelectedValue。
if(GearType != null && GearType.SelectedValue != null) {
Mercedes(Model,GearType,color,EngineCapacity,CarDescription,Price,Image1Url,Image2Url,Image3Url,Userid,State) values('1','" + GearType.SelectedValue.ToString() + "','r','221','ddd','2','ss','ss','ss','1','False')";
}