Ошибка значение не может быть неопределенным

  • Remove From My Forums

 locked

Удаление строки из таблицы

  • Вопрос

  • Есть таблица на главном представлении Index, в конроллере пытаюсь удалить запись из таблицы, при этом ошибок не возникает, но  при запуске и нажатии соответствующей кнопки, происходит ошибка. запись в контроллере:

     public ActionResult Delete(int kod)
            {
                Obsha9 kodfio = _db.Obsha9.Find(kod);
                if (kod != null)
                {
                    _db.Obsha9.Remove(kodfio);
                    _db.SaveChanges();
                }
                return RedirectToAction(«Index»);

    <<<<<<ОШИБКА

    Ошибка сервера в приложении ‘/’.


    Словарь параметров содержит запись со значением NULL для параметра «kod» типа «System.Int32», не допускающего значение NULL, для метода «System.Web.Mvc.ActionResult Delete(Int32)» в «ReitingTeacher.Controllers.HomeController».
    Необязательный параметр должен иметь ссылочный тип, тип, допускающий значение NULL, либо он должен быть объявлен как необязательный параметр.
    Имя параметра: parameters

    Описание: Необработанное исключение при выполнении текущего веб-запроса. Изучите трассировку стека для получения дополнительных сведений о данной ошибке и о вызвавшем ее фрагменте кода.

    Сведения об исключении: System.ArgumentException: Словарь параметров содержит запись со значением NULL для параметра «kod» типа «System.Int32», не допускающего значение NULL, для метода «System.Web.Mvc.ActionResult
    Delete(Int32)» в «ReitingTeacher.Controllers.HomeController». Необязательный параметр должен иметь ссылочный тип, тип, допускающий значение NULL, либо он должен быть объявлен как необязательный параметр.
    Имя параметра: parameters.

           

    • Изменено

      28 мая 2013 г. 13:58

Ответы

  • Ну развезли тут цирк))

    1 посмотри в свой роутинг — там скорее всего увидишь чтото типа такого
    «{controller}/{action}/{id}»

    так вот id тут ключевое

    и у тебя передается в твой метод id=12345/*kod*/, а метод не принимает id а принимает kod

    соответственно либо тут исправь

    @Html.ActionLink(«Удалить», «Delete», new { kod= c.KodFIO }) и добавь роутинг с
    «{controller}/{action}/{kod

    либо тут исправь
    public ActionResult Delete(int id)
            {
                Obsha9 kodfio = _db.Obsha9.Find(id);
               // if (id != null)
               // {
                    _db.Obsha9.Remove(id);
                    _db.SaveChanges();
                //}
                return RedirectToAction(«Index»);


    P.S. с исправлением роутинга так неполучится
    «{controller}/{action}/{kod}» — конфликт пойдет c id
    в общем запомни что существует связь по именам которую нужно соблюдать — если в ссылке стоит id значит и в методе должен стоять id а не int yaSralNaEtoPravilo

    • Изменено
      stuhin
      31 мая 2013 г. 9:41
    • Предложено в качестве ответа
      Maksim MarinovMicrosoft contingent staff, Moderator
      3 июня 2013 г. 7:16
    • Помечено в качестве ответа
      Maksim MarinovMicrosoft contingent staff, Moderator
      4 июня 2013 г. 10:29

  • проблема решена проще чем ожидалось 

     public ActionResult Delete(int? kod1)
            {
                Obsha9 kod = _db.Obsha9.Find(kod1);
    
                if (kod != null)
                {
                    _db.Obsha9.Remove(kod);
                    _db.SaveChanges();
                }
                return RedirectToAction("Index");

    @Html.ActionLink("Удалить", "Delete", new { id= c.Kod, kod1=c.Kod})

    • Предложено в качестве ответа
      YatajgaModerator
      1 июня 2013 г. 7:09
    • Помечено в качестве ответа
      Maksim MarinovMicrosoft contingent staff, Moderator
      4 июня 2013 г. 10:29

Этот путь к картинке пустой(налл).

Напиши простой метод который двигается от большего разрешения к меньшему и если тот не нулл — то возвращает адрес картинки который ты можешь добавлять в свой лист.

    public static string GetTheBiggestSizeUrlPhoto(Photo photoObj)
    {
        if (photoObj.PhotoSrc != null)
        {
            return photoObj.PhotoSrc.OriginalString;
        }
        if (photoObj.Photo2560 != null)
        {
            return photoObj.Photo2560.OriginalString;
        }
        if (photoObj.Photo1280 != null)
        {
            return photoObj.Photo1280.OriginalString;
        }
        if (photoObj.Photo807 != null)
        {
            return photoObj.Photo807.OriginalString;
        }
        if (photoObj.Photo604 != null)
        {
            return photoObj.Photo604.OriginalString;
        }
        if (photoObj.Photo130 != null)
        {
            return photoObj.Photo130.OriginalString;
        }

        return photoObj.Photo75.OriginalString;
    }

Учись дебажится.

Потом отдельно пишешь метод для скачивания картинки с адреса и можешь достать сам битмап/

    public static Bitmap GetPhotoBitmapFromUrl(string url)
    {
        if (url != string.Empty)
        {
            try
            {
                WebRequest request = WebRequest.Create(url);

                WebResponse response = request.GetResponse();

                Stream responseStream = response.GetResponseStream();

                Bitmap bitmapImg = new Bitmap(responseStream);

                return bitmapImg;
            }
            catch (WebException)
            {
            }
        }

        return new Bitmap(1, 1);
    }

1 / 1 / 0

Регистрация: 20.01.2019

Сообщений: 18

1

.NET 4.x

17.11.2021, 11:04. Показов 5532. Ответов 6


Студворк — интернет-сервис помощи студентам

Здравствуйте. В ноябре 20-го года делал программу-тест с простым графическим интерфейсом, считывающую вопросы из txt-файла (полный проект во вложении). Точно помню, что она работала, зачёт по ней сдан. Сейчас она мне понадобилась для другой работы, но при решении 7-го вопроса теста из 10 Visual Studio выдаёт ошибку: System.ArgumentNullException: «Значение не может быть неопределенным. Имя параметра: String» (скрин во вложениях).
Помогите, пожалуйста, разобраться, что не так и вернуть проект в рабочее состояние, заранее спасибо.

Миниатюры

Ошибка: System.ArgumentNullException: "Значение не может быть неопределенным. Имя параметра: String"
 



0



2728 / 1644 / 871

Регистрация: 14.04.2015

Сообщений: 5,616

17.11.2021, 11:43

2

Лучший ответ Сообщение было отмечено metalphoenix как решение

Решение

metalphoenix, лишние пустые строки из файла уберите



1



1 / 1 / 0

Регистрация: 20.01.2019

Сообщений: 18

17.11.2021, 12:18

 [ТС]

3

AndreyVorobey, вы имеете в виду пустые строки в конце текстового файла с вопросами «t.txt»? Убрал, не помогло.

Добавлено через 5 минут
Ругается схожей ошибкой, только уже на другое место



0



1 / 1 / 0

Регистрация: 20.01.2019

Сообщений: 18

17.11.2021, 12:19

 [ТС]

4

Скрин

Миниатюры

Ошибка: System.ArgumentNullException: "Значение не может быть неопределенным. Имя параметра: String"
 



0



1 / 1 / 0

Регистрация: 20.01.2019

Сообщений: 18

17.11.2021, 12:26

 [ТС]

5

AndreyVorobey, Благодарю. Оказывается, в каталоге был дубль текстового файла, строки надо было убирать в нём.



0



2728 / 1644 / 871

Регистрация: 14.04.2015

Сообщений: 5,616

17.11.2021, 12:28

6

metalphoenix, ну так это не дубль, а тот файл, с которого считываются данные. нет? в первом файле было 10 вопросов, а во втором 7, и на нем ошибка была. мне казалось, это и так было понятно



0



1 / 1 / 0

Регистрация: 20.01.2019

Сообщений: 18

17.11.2021, 12:33

 [ТС]

7

AndreyVorobey, да, именно так. Пустые строки были в обоих. Видимо, файл с 10 вопросами я ранее сделал как резерв для изменения вопросов в будущем, а сейчас не сразу понял, что данные считываются не с него, а из того, в котором 7 вопросов. Ещё раз благодарю вас за оперативную помощь, хорошего вам дня)



0



Как исправить ошибку?

Как исправить ошибку?

System.ArgumentNullException: "Значение не может быть неопределенным. Имя параметра: entity"

WPF форма содержащая 8 текст боксов

<StackPanel Grid.Column="2">
        <TextBox  Margin="5" Width="100" Text="{Binding SelectedOrder.КодЗаказа}" FontSize="16" FontWeight="Normal" FontStyle="Normal"/>
        <TextBox Margin="10" Width="100" Text="{Binding SelectedOrder.КодКлиента}" FontSize="16" FontWeight="Normal" FontStyle="Normal"/>
        <TextBox Margin="10" Width="100" Text="{Binding SelectedOrder.КодМаршрута}" FontSize="16" FontWeight="Normal" FontStyle="Normal"/>
        <TextBox Margin="10" Width="100" Text="{Binding SelectedOrder.КодВодителя}" FontSize="16" FontWeight="Normal" FontStyle="Normal"/>
        <TextBox Margin="10" Width="100" Text="{Binding SelectedOrder.КодТС}" FontSize="16" FontWeight="Normal" FontStyle="Normal"/>
        <TextBox Margin="10" Width="100" Text="{Binding SelectedOrder.Дата}" FontSize="16" FontWeight="Normal" FontStyle="Normal"/>
        <TextBox Margin="10" Width="100" Text="{Binding SelectedOrder.ДатаНачала}" FontSize="16" FontWeight="Normal" FontStyle="Normal"/>
        <TextBox Margin="10" Width="100" Text="{Binding SelectedOrder.ДатаОкончания}" FontSize="16" FontWeight="Normal" FontStyle="Normal"/>
        <Button Margin="50" Width="100" Content="Создать"
                Command="{Binding AddCommand}"
                
                />

    </StackPanel>

класс ViewModel, который реализует передачу данных из представления в модель

public class OrderViewModel : INotifyPropertyChanged
{
    private ObservableCollection<Заказ> orderList; //список записей в таблице Заказ
    private Заказ selectedOrder; //конкретный запись в Заказ
    private TransportCompanyEntities transportCompanyEntities; // контекст? 

    public Заказ SelectedOrder
    {
        get { return selectedOrder; }
        set
        {
            selectedOrder = value;
            OnPropertyChanged(nameof(SelectedOrder));
        }

    }

    public ObservableCollection<Заказ> OrderList
    {
        get { return orderList; }
        set
        {
            orderList = value; 
            OnPropertyChanged(nameof(OrderList));
        }
    }

    public OrderViewModel()
    {
        transportCompanyEntities = new TransportCompanyEntities();
        LoadOrders();
    }

    private void LoadOrders()
    {
        OrderList = new ObservableCollection<Заказ>(transportCompanyEntities.Заказ);
    }

    private RelayCommand addCommand;
    public RelayCommand AddCommand
    {
        get
        {
            return addCommand ??
              (addCommand = new RelayCommand(obj =>
              {
                  transportCompanyEntities.Заказ.Add(SelectedOrder);
                  transportCompanyEntities.SaveChanges();
              }));
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;

    protected void OnPropertyChanged([CallerMemberName] string propertyName = null)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }
    
}
public class RelayCommand{}

Ошибка:

System.ArgumentNullException: "Значение не может быть неопределенным. Имя параметра: entity"


  • Вопрос задан

    более года назад

  • 930 просмотров

Пригласить эксперта

Значение не может быть неопределенным. Имя параметра: entity

Не оставлять entity неопределённым. Или использовать значение по-умолчанию, или разрешить быть неопределённым.


  • Показать ещё
    Загружается…

24 июн. 2023, в 23:21

5000 руб./за проект

24 июн. 2023, в 21:49

1000 руб./за проект

24 июн. 2023, в 18:21

30000 руб./за проект

Минуточку внимания

  • Remove From My Forums
  • Вопрос

  • Доброго времени суток

    ОС 2008 r2 standart

    sql x64 2008 r2

    Имею такую ошибку

    Значение не может быть неопределенным.
    Имя параметра: viewInfo (Microsoft.SqlServer.Management.SqlStudio.Explorer)

    ——————————
    Расположение программы:

       в Microsoft.SqlServer.Management.SqlStudio.Explorer.ExplorerViewDescriptor..ctor(IFactoryService factoryService, INavigationViewInfo viewInfo, String urnPath, IDictionary`2 allEntities)
       в Microsoft.SqlServer.Management.SqlStudio.Explorer.NavigationService.GetView(String urnPath)
       в Microsoft.SqlServer.Management.UI.VSIntegration.ObjectExplorer.NavigableItemBuilder.<GetColumnsFromNavigationService>d__f.MoveNext()
       в Microsoft.SqlServer.Management.UI.VSIntegration.ObjectExplorer.NavigableItemBuilder.AddFields(List`1 list, IEnumerable`1 fields, IDictionary`2 allValidFields, AddFieldsFlags flags)
       в Microsoft.SqlServer.Management.UI.VSIntegration.ObjectExplorer.NavigableItemBuilder.GetFields(INodeInformation source, Dictionary`2& allValidColumns)
       в Microsoft.SqlServer.Management.UI.VSIntegration.ObjectExplorer.NavigableItemBuilder.BuildDynamicItemWithQuery(IList`1 nodes, INodeInformation source, INavigableItem sourceItem, String urnQuery, Boolean registerBuilder, Boolean registerBuiltItems)
       в Microsoft.SqlServer.Management.UI.VSIntegration.ObjectExplorer.NavigableItemBuilder.BuildDynamicItem(IList`1 nodes, INodeInformation source, INavigableItem sourceItem, IFilterProvider filter)
       в Microsoft.SqlServer.Management.UI.VSIntegration.ObjectExplorer.NavigableItemBuilder.Build(IList`1 nodes, INodeInformation source, INavigableItem sourceItem, IFilterProvider filter)
       в Microsoft.SqlServer.Management.UI.VSIntegration.ObjectExplorer.NavigableItem.RequestChildren(IGetChildrenRequest request)
       в Microsoft.SqlServer.Management.UI.VSIntegration.ObjectExplorer.ExplorerHierarchyNode.BuildChildren(WaitHandle quitEvent)

    скачал process explorer

    зашел в ssms.exe во вкладку strings

    искал по тегу not found и нашел там %wZ program not found — skipping AUTOCHECK

    прошу помочь разобраться

Ответы

  • У меня появилась мысль.

    Установившик не давал первоначально установить sql т.к. жаловался на отствутвие dll (не могу сказать какой) в папке NET Framework 2.0.50727 , и я взял из соседней папки  (NET Framework 4) аналогичный dll, вставил в папку и установил sql server. Как
    считаете это могло повлиять ?

    Конечно! Ещё и mscorelib. Нельзя так делать, DLL в папке 2.0… и папке 4… используют разные версии .Net. Обратной совместимости нет.

    Переустановите .Net на компе, это должно помочь.

    • Предложено в качестве ответа

      26 июля 2011 г. 18:07

    • Помечено в качестве ответа
      Dmitry Davydov
      27 июля 2011 г. 13:45

  • Решил проблему, как всегда через …

    sql удалил полностью

    Пытался удалить продукты .NET сервер отказал, пытался воспользоваться установщиком .NET Framework версии 2, отказал, сказав что все уже установлено в комплекте с ОС (хотя папка пустовата была).

    Перенес файлы .NET версии 2 из ОС 2008 (другого сервера)

    Переустановил sql, не помогло.

    Снес и поставил sql express 2008 (которая ещё требует сразу обновления до SP1)

    Удалил экземпляр, оставив средства управления, т.к. базы не цеплялись на него (конфликт база версии 661 а цеплять можно только не выше 655)

    И установил уже экземпляр стандарта, без доп. модулей.

    Все работает теперь. Но как видите через ж…

    • Помечено в качестве ответа
      Dmitry Davydov
      27 июля 2011 г. 13:45

  • Ошибка ибп ippon back
  • Ошибка значение должно быть скалярным mathcad
  • Ошибка значение должно быть вектором mathcad
  • Ошибка значение адреса электронной почты недопустимо
  • Ошибка значение email не является правильным email адресом