使用:MVC 4、ASP.NET Razor
我得到了一个看起来不应该发生的错误。它告诉我我使用了一个空引用,States,但是很明显它正在被设置。
控制器:
public ActionResult Index()
{
Dictionary<int, string> states = new Dictionary<int, string>()
{
{ -1, "a"},
{ 0, "b"},
{ 1, "c"},
{ 2, "d"},
};
//assigning states
ViewBag.States = states;
foreach (KeyValuePair<int, string> de in ViewBag.States)
{
Debug.WriteLine(de.Key);
}
return View();
}
“视图:
<div class="search-input">
<select>
@foreach (KeyValuePair<int, string> de in ViewBag.States)
{
<option value="@de.Key">@de.Value</option>
}
</select>
</div>
错误:
Cannot perform runtime binding on a null reference
Line 54: @foreach (KeyValuePair<int, string> de in ViewBag.States)
7条答案
按热度按时间ijxebb2r1#
找到的解决方案:我的视图ViewBag.Typo〈--这导致了错误,但是调试器将异常放在了一个不相关的地方。
y1aodyip2#
当您的Razor程式码中有ViewBagNon-Existent呼叫方法时,就会发生这个错误。
控制器
剃刀:
由于某种原因,.net无法在正确的行中显示错误。
通常这会浪费很多时间。
eblbsuwk3#
使用反映动态更新不存在的属性时,也会掷回这个例外状况。
如果使用反射来动态更新属性值,则值得检查以确保传递的
PropertyName
与实际属性相同。在我的例子中,我试图更新
Employee.firstName
,但是属性实际上是Employee.FirstName
。值得记住。:)
bkhjykvo4#
我解决这个错误的方法是从另一个引用了
@Model.Id
的项目中复制粘贴。这个特定的页面没有有一个模型,但是错误行离实际的错误太远了,我从来没有发现过它!dffbzjpn5#
您必须定义不等于null的状态。
dldeef676#
与Razor无关,您将在运行时看到尝试访问动态值中不存在的属性的异常:
jmp7cifd7#
设定
作为函数外部的一个属性,在函数内部插入条目,它应该可以工作。