2017-02-13 20 views
1

У меня есть пользовательский помощник html с последним параметром типа bool. Мой код отлично работает, когда в базе данных есть данные. Но, без данных, он выдает следующее сообщение об ошибке:элемент модели, переданный в словарь, имеет тип «System.Boolean», но для этого словаря требуется элемент модели типа «MyProject.checkboxstate»

System.NullReferenceException: Object reference not set to an instance of an object.

Затем я попытался проверить на возможное «нулевое значение» и отправить значение как «ложь» к мнению, по-видимому, не увенчались успехом.

public ActionResult Index() 
{    
    bool? defaultVal = true; 

    var dbValue = context.checkboxstates.Where(c => c.Name == "Country").FirstOrDefault(); 
    if (dbValue == null) 
    { 
     return View(defaultVal); 
    }    
    return View(dbValue); 
}  

Мой Вид:

@model MyProject.CheckboxState 
@Html.MyCustomHtmlHelper("text", "AnotherText", "changeState", Model.state) 

Здесь Model.state отвечает за «флажок» флажок «проверено» или «непроверенные», основанный на возвращаемое значение из базы данных. У меня нет модели, поскольку я использую первый подход к базе данных.

Если я пытаюсь передать явно логическое значение из контроллера, я получаю сообщение об ошибке:

The model item passed into the dictionary is of type 'System.Boolean', but this dictionary requires a model item of type 'MyProject.checkboxstate'.

+1

Я ценю, что вы пытаетесь поставить вопрос как «РЕШЕННЫЙ», но правильный подход - принять один из ответов. Это автоматически удалит вопрос из представления «без ответа». Это также, и, возможно, самое главное, дает кредит тому, кто помог вам туда добраться. –

+0

Не удалось увидеть вкладку выбора ответа. Спасибо, что указали это. –

ответ

0

В случае Model это null попробуйте передать значение по умолчанию для пользовательского HTML помощника:

@Html.MyCustomHtmlHelper("text", "AnotherText", "changeState", Model!=null?Model.state:false) 

Вы не можете передать логический параметр в свой вид из-за того, что в качестве модели ожидается объект CheckboxState.

+0

Это было здорово !!! Спасибо. –

+0

Добро пожаловать @rkun;) – octavioccl

+1

@rkun: не забудьте принять этот ответ, когда система позволит вам это сделать. Чтобы принять ответ, нажмите галочку в левой части ответа, который вы предпочитаете, чтобы он стал зеленым. Вот как мы благодарим полезных людей в Stack Overflow. – halfer