问题描述
所以我正在用C#开发MVC n层应用程序,并且得到了NullReferenceExeption。 程序应该做什么: 用户可以输入诸如防御,进攻等字符类型。 该字符串被传递到控制器中并成为参数。接下来,应将此参数传递到逻辑层。在这里,它应该将参数传递给DAL。在DAL中,该参数用于查询中以从数据库中获取某些数据。此数据应发回逻辑层,并从逻辑层发回,并应显示在用户的屏幕上。
我在Logic层中得到了错误(我在逻辑层中注释了错误发生的确切位置。
传递参数不是问题,因为我通过断点知道inputKarakterSoort的值是用户键入的给定值。
我的DAL应该返回数据,所以我不知道为什么得到NullReferenceExeption。 我的控制器从用户那里得到一个字符串,将给定的字符串变成一个参数,该参数在DAL中用于执行查询。
这是我的DAL:
public IEnumerable<IKarakter> GetSortedKarakters(string inputKarakterSoort) {
using (sqlConnection connection = GetConnection())
{
connection.open();
var command = new sqlCommand("SELECT TOP 2 * FROM Karakter WHERE KarakterSoort = @inputKarakterSoort ORDER BY NEWID();",connection);
command.Parameters.Add("@inputKarakterSoort",sqlDbType.VarChar).Value = inputKarakterSoort;
var reader = command.ExecuteReader();
var sortedKarakters = new List<IKarakter>();
while (reader.Read())
{
var karakter = new KarakterDTO
{
KarakterId = (int)reader["KarakterId"],KarakterSoort = reader["KarakterSoort"]?.ToString(),KarakterNaam = reader["KarakterNaam"]?.ToString()
};
sortedKarakters.Add(karakter);
}
return sortedKarakters;
}
}
我的逻辑层(其中有错误):
public class SortedKarakterLogic : ISortedKarakterLogic
{
private ISortedKarakterContext sortedKarakterContext { get; }
private string _inputKarakterSoort { get; set; }
public SortedKarakterLogic(ISortedKarakterContext sortedContext)
{
sortedKarakterContext = sortedContext;
}
public SortedKarakterLogic(string inputKarakterSoort)
{
_inputKarakterSoort = inputKarakterSoort;
}
public IEnumerable<IKarakter> GetSortedKarakters(string inputKarakterSoort)
{
return sortedKarakterContext.GetSortedKarakters(inputKarakterSoort);
//The error is on the line above,sortedKarakterContext is equal to null,but I don't kNow why or how.
}
}
我的控制器:
public ActionResult SortedKarakter()
{
return View();
}
[HttpPost]
public ActionResult SortedKarakter(string karakterSoort)
{
SortedKarakterLogic karakterLogic = new SortedKarakterLogic(karakterSoort);
karakterLogic.GetSortedKarakters(karakterSoort);
ViewBag.Name = string.Format("{0}",karakterSoort);
var sortedKarakters = _sortedKarakterLogic.GetSortedKarakters(karakterSoort);
var _sortedKarakters = new List<Karakterviewmodel>();
foreach (var karakter in sortedKarakters)
{
_sortedKarakters.Add(new Karakterviewmodel
{
KarakterId = karakter.KarakterId,KarakterNaam = karakter.KarakterNaam,KarakterSoort = karakterSoort
});
}
return View(_sortedKarakters);
}
我通过ViewBag获得了字符串,
如果您需要查看接口或其他类,只需在评论中提问,我将文件上传到该问题。 谁能帮我? 预先感谢!
注意:我不能在DAL中使用断点,因为它甚至都不会到达那里。当它遍历逻辑层时就会出错。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)