2016-06-16 5 views
0

Я понятия не имею, откуда взялся параметр value.System.ArgumentNullException: значение не может быть нулевым. Имя параметра: значение

Вид: Ajax.BeginForm запрос:

@Html.DropDownListFor(model => model.EXPENSE_REPORTABLE, new SelectList(
        new[] 
        { 
         new { Value = "true", Text = "Yes" }, 
         new { Value = "false", Text = "No" }, 
        }, 
        "Value", 
        "Text", 
        Model 
       ), 
       "-- Select --") 

После того как я не выбрать да или нет в выпадающем списке, частичный вид воздастся для отображения данных в WebGrid (grid является экземпляром WebGrid). Один из столбцов бросает ошибку:

grid.Column("expenseReportable","Expense Reportable?",format:@<text> 
<span class="display-mode">@item.EXPENSE_REPORTABLE </span> <!--error here --> 
@Html.RadioButton("GridCol_Expense", (Nullable<bool>)item.EXPENSE_REPORTABLE, true, new { @class="edit-mode"}) Yes   
@Html.RadioButton("GridCol_Expense", (Nullable<bool>)item.EXPENSE_REPORTABLE, false, new { @class="edit-mode"}) No 
       </text>, style:"col1Width"), 

Свойство модели:

public Nullable <bool> EXPENSE_REPORTABLE {get; set;} 

InnerException: null

Сообщение исключения:

Value cannot be null. Parameter name: value

+0

ошибки, скорее всего, потому, что значение '' item.EXPENSE_REPORTABLE' является null' и брошено на следующие линиях (2 параметра 'RadioButton()' не может быть ' null'). Но код для радиобарабанов не имеет никакого смысла, потому что вы создаете 2 переключателя с одинаковым значением. Вы хотите, чтобы радиокнопки вернули «true» или «false»? (в этом случае у вас есть второй и третий параметры неправильного пути) –

+0

Нет, вторым параметром является значение переключателя. Если значение 'item.EXPENSE_REPORTABLE' говорит' true', тогда вы генерируете обе переключатели как '' (что немного бессмысленно) - но если значение 'item.EXPENSE_REPORTABLE' равно' null ', тогда будет выбрано исключение. –

+0

переключатели на самом деле принадлежат классу css 'edit-mode', который не будет отображаться, если вы не нажмете кнопку редактирования. –

ответ

0

Добавьте приведенный ниже код в файле Global.asax ,

Вы увидите исключение подробно, что пошло не так.

void Application_Error(object sender, EventArgs e) 
{ // Attach break point here. 
    Exception TheError = Server.GetLastError(); //After execution of this line just check TheError variable. It will show you the details. 
    Server.ClearError(); 
} 

Я подозреваю, что ваши объекты item/grid может быть пустым или может есть какой-то пустое свойство. Просто убедитесь, что он не является нулевым, отлаживая сам код сервера.

Также сложно угадать, что происходит не так в конце, и разговор также идет очень долго. Просто попробуйте это решение.

Надеется, что это помогает :)

Смежные вопросы