Я пытаюсь найти что-то для проекта, над которым я работаю. Я использую 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;}
}
}
Текущие ошибки:
- В командной строке говорится, что мне не хватает скобок и запятых, но я не нахожу ничего пропущенного.
- Кортеж должен содержать хотя бы два элемента.
- Определение типа или пространства имен или ожидаемый конец файла
- Пространство имен не может напрямую содержать элементы, такие как поля или методы.