Ответ 1
Найдено решение: у меня была опечатка, ViewBag.Typo < - это вызвало ошибку, но отладчик разместил исключение в нерелевантном месте.
с использованием: MVC 4, ASP.NET Razor
Я получаю сообщение об ошибке, похожее на то, что это невозможно. Он говорит мне, что я использую null-reference, 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)
Найдено решение: у меня была опечатка, ViewBag.Typo < - это вызвало ошибку, но отладчик разместил исключение в нерелевантном месте.
Это исключение также генерируется при динамическом обновлении несуществующего свойства с использованием отражения.
Если для динамического обновления значений свойств используется рефлексия, стоит проверить, чтобы прошедший PropertyName
был идентичен фактическому свойству.
В моем случае я пытался обновить Employee.firstName
, но на самом деле это свойство было Employee.firstName
.
Стоит иметь в виду.:)
Эта ошибка возникает, когда в вашем коде бритвы вызывается метод ViewBag, который вызывает метод.
контроллер
public ActionResult Accept(int id)
{
return View();
}
Бритва:
<div class="form-group">
@Html.LabelFor(model => model.ToId, "To", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.Flag(Model.from)
</div>
</div>
<div class="form-group">
<div class="col-md-10">
<input value="@ViewBag.MaximounAmount.ToString()" />@* HERE is the error *@
</div>
</div>
По какой-то причине .net не могут показать ошибку в правильной строке. Обычно это вызывает много времени.
Мое решение этой ошибки состояло в том, что копия и вставка из другого проекта, имеющего ссылку на @Model.Id
. Эта страница не имела модель, но строка ошибки была настолько далека от фактической ошибки, о которой я никогда не узнал!
Вы должны определить состояния, не равные нулю.
@if (ViewBag.States!= null)
{
@foreach (KeyValuePair<int, string> de in ViewBag.States)
{
value="@de.Key">@de.Value
}
}
Установите
Dictionary<int, string> states = new Dictionary<int, string>()
как свойство вне функции и внутри функции вставлять записи, он должен работать.