Сохранение C# Списка в файл [Обновление] - PullRequest
0 голосов
/ 15 апреля 2020

Я пытаюсь найти что-то для проекта, над которым я работаю. Я использую C# и HTML для сбора ввода в форме, а затем на другой странице я отображаю информацию в списке. У меня это до того момента, когда он сохранит ввод и затем отобразит его на другой странице, но когда приложение закрывается, оно исчезает, потому что введенные данные были только в памяти. Я хотел бы иметь возможность сохранять данные списка во внешний файл, и он должен добавлять новые данные в конец файла каждый раз, когда создается новая запись. Я также хотел бы, чтобы он читал этот файл при каждом запуске программы. Извините, если это очевидный вопрос, я очень плохо знаком с кодированием. Вот мой код:

Класс для списка:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.IO;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;

namespace MCRApp
{
    public class Program
    {
        public static void Main(string[] args)
        {
            CreateHostBuilder(args).Build().Run();
        }

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                });


        public class Database {
            public static List<MCRApp.Models.Entry> EntryList = new List<MCRApp.Models.Entry>();

            string dir = @"\MCRApp";
            string serializationFile = Path.Combine(dir, "entries.txt");

            //serialize
            using (Stream stream = File.Open(serializationFile, FileMode.Create))
            {
                var bformatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();

                bformatter.Serialize(stream, salesmanList);
            }

            //deserialize
            using (Stream stream = File.Open(serializationFile, FileMode.Open))
            {
                var bformatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();

                List<MCRApp.Models.Entry>  EntryList = (List<MCRApp.Models.Entry>)bformatter.Deserialize(stream);
            }
        }

    }
}

Код от контроллера:

[HttpGet]
public IActionResult Entry()
{   
  return View();
}

[HttpPost]
public IActionResult Entry(Entry ent)
{
    MCRApp.Program.Database.EntryList.Add(ent);
    return Redirect("/Home/Entry");
}

Модель:

using System;
using System.IO;

namespace MCRApp.Models
{
    [Serializable]
    public class Entry
    {
        public string DateOfEntry {get; set;}
        public string Name {get; set;}
        public int Age {get; set;}
        public string Ethnicity{get; set;}
        public string Gender {get; set;}
        public string Category {get; set;}
        public string Title {get; set;}
        public int Rating {get; set;}
        public string Comments {get; set;}
        public string Method {get; set;}
    }
}

Текущие ошибки:

  • В командной строке говорится, что мне не хватает скобок и запятых, но я не нахожу ничего пропущенного.
  • Кортеж должен содержать хотя бы два элемента.
  • Определение типа или пространства имен или ожидаемый конец файла
  • Пространство имен не может напрямую содержать элементы, такие как поля или методы.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...