Я новичок в ASP. NET MVC. У меня есть веб-приложение со списком дел. Однако я должен использовать текстовый файл в качестве базы данных для добавления создания новых категорий (Categories.txt
). Я могу успешно добавлять новые категории в текстовый файл, используя ActionResult Create
в моем CategoriesController
. Редактирование ActionLink
находится в HomeController
. HomeController
используется для отображения списка дел из текстового файла, который отображает категории.
Я изо всех сил пытаюсь понять, как я могу отредактировать эту спецификацию c category name
, используя [HttpGet] public ActionResult Edit(int id) { }
, чтобы получить идентификатор категории.
Текстовый файл имеет следующий формат:
CategoryName, ID
Groceries, 0
Мой код для HomeController
выглядит следующим образом:
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using ToDoList.Models;
using ToDoList.ViewModels;
namespace ToDoList.Controllers
{
public class HomeController : Controller
{
// Reading in both text files
public List<Category> categories = new List<Category>();
public List<Item> it = new List<Item>();
// GET: Home
public ActionResult Index()
{
//CatData means CategoryData
string CatData = System.IO.File.ReadAllText(Server.MapPath("~/Data/Categories.txt"));
string ItemData = System.IO.File.ReadAllText(Server.MapPath("~/Data/Item.txt"));
foreach (string rowInItem in ItemData.Split('\n'))
{
if (!string.IsNullOrEmpty(rowInItem))
{
it.Add(new Item
{
itemName = rowInItem.Split(',')[0],
itemID = Convert.ToInt32(rowInItem.Split(',')[1]),
categoryID = Convert.ToInt32(rowInItem.Split(',')[2]),
check = rowInItem.Split(',')[3]
});
}
}
foreach (string row in CatData.Split('\n'))
{
if (!string.IsNullOrEmpty(row))
{
categories.Add(new Category
{
categoryName = row.Split(',')[0],
categoryID = Convert.ToInt32(row.Split(',')[1]),
}) ;
}
}
var categoryItemViewControler = new CategoryItemViewModel
{
Cat = categories,
It = it
};
return View(categoryItemViewControler);
}
}
}
И мой CategoryController
выглядит как следует:
using System;
using System.Collections.Generic;
using System.Configuration;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
using System.Web;
using System.Web.Mvc;
using ToDoList.Models;
using ToDoList.ViewModels;
namespace ToDoList.Controllers
{
public class CategoryController : Controller
{
// GET: Category
public ActionResult Index()
{
return View();
}
// GET: Category/Details/5
public ActionResult Details(int id)
{
return View();
}
// GET: Category/Create
public ActionResult Create()
{
return View();
}
// POST: Category/Create
[HttpPost]
public ActionResult Create(FormCollection collection)
{
try
{
string categoryName = collection["categoryName"];
string CatDataLast = System.IO.File.ReadLines(Server.MapPath("~/Data/Categories.txt")).Last();
string[] idNum = CatDataLast.Split(',');
int lastId = Convert.ToInt32(idNum[1]);
int newID = lastId + 1;
System.IO.File.AppendAllText(Server.MapPath("~/Data/Categories.txt"), '\n'+categoryName + "," + Convert.ToInt32(newID));
// TODO: Add insert logic here
return RedirectToAction("Index", "Home");
}
catch
{
return View();
}
}
// GET: Category/Edit/5
[Route("Category/Edit/{id}")]
public ActionResult Edit(Category id)
{
return View(id.categoryID);
}
// POST: Category/Edit/5
[HttpPost]
public ActionResult Edit(Category category, FormCollection collection)
{
try
{
string editedName = collection["categoryName"];
string catName = category.categoryName;
string str = System.IO.File.ReadAllText(Server.MapPath("~/Data/Categories.txt"));
str = str.Replace(catName, editedName);
System.IO.File.WriteAllText(Server.MapPath("~/Data/Categories.txt"), str);
// TODO: Add update logic here
return RedirectToAction("Index", "Home");
}
catch
{
return View();
}
}
// GET: Category/Delete/5
public ActionResult Delete(int id)
{
return View();
}
// POST: Category/Delete/5
[HttpPost]
public ActionResult Delete(int id, FormCollection collection)
{
try
{
// TODO: Add delete logic here
return RedirectToAction("Index");
}
catch
{
return View();
}
}
}
}
Я могу вставить в текстовый файл, но я не могу редактировать элемент в этом текстовом файле, когда мы меняем имя категории.
Любая помощь и совет будет очень признателен.