目前,我正尝试将列表中的数据写入JSOn文件。我已经阅读了一篇与此问题非常相似的帖子,只是出于某种原因,它似乎对我不起作用。
这是我的模型:
namespace ERP.Classes
{
public class User_Role
{
public string RoleId { get; init; }
public string RoleName { get; set; }
public string RoleDescription { get; set; }
public List<User> Users { get; set; }
public User_Role(string roleName, string roleDescription)
{
RoleId = Guid.NewGuid().ToString("N");
RoleName = roleName;
RoleDescription = roleDescription;
Users = new List<User>();
}
}
}
这是我的剃刀页面,我想在这里创建这个列表并保存JSON文件:
@page "/user_roles"
@using ERP.Classes
@using Microsoft.AspNetCore.Components.Forms
<PageTitle>User Roles</PageTitle>
<h1>User Roles</h1>
<EditForm Model="@_userRoles" OnValidSubmit="@createRoleName">
<InputText id="roleName" @bind-Value="_roleName"/>
<InputText id="roleDescription" @bind-Value="_roleDescription"/>
<button type="submit">Create user role</button>
</EditForm>
<p>@_confirmation</p>
<table>
<tr>
<th><h5>Role Id</h5></th>
<th><h5>Role Name</h5></th>
<th><h5>Role Description</h5></th>
</tr>
@foreach(User_Role list in _userRoles)
{
<tr>
<td>@list.RoleId</td>
<td>@list.RoleName</td>
<td>@list.RoleDescription</td>
</tr>
}
</table>
// Button to call the method
<button onclick="@saveData">Save</button>
@code {
private string _confirmation = "";
private string _roleName = "";
private string _roleDescription = "";
private List<User_Role> _userRoles = new List<User_Role>();
private void createRoleName()
{
if(roleExists(_userRoles,_roleName))
{
_confirmation = "Role already exists";
}
else
{
User_Role _userRole = new User_Role(_roleName,_roleDescription);
_userRoles.Add(_userRole);
_confirmation = "Role created";
}
}
private List<User_Role> loadRoles()
{
return _userRoles;
}
// Calling the SaveData class to send over the data
private void saveData()
{
SaveData<User_Role> _data = new SaveData<User_Role>();
_data.SavetoJson("userRoles.txt",_userRoles);
}
private bool roleExists(List<User_Role> user_Roles, string currentRoleName)
{
bool hasRole = false;
foreach(var item in user_Roles)
{
if(item==null)
{
hasRole = false;
}
else if(item.RoleName == currentRoleName)
{
hasRole = true;
}
}
return hasRole;
}
}
这是具有保存功能的类:
using System.Collections.Generic;
using Newtonsoft.Json;
namespace ERP.Classes
{
public class SaveData <T>
{
public void SavetoJson(string filename, List<T> dataList)
{
using (StreamWriter file = File.CreateText(@"C:\Data\" + filename))
{
JsonSerializer serializer = new JsonSerializer();
serializer.Serialize(file, dataList);
}
}
}
}
我的SaveData类之所以是通用的,是为了我可以将其用于我所有的其他模型。为了防止重复编码。但由于某种原因,它不会创建JSON文件。我已经尝试了“.txt”和“.json”。我对编程很陌生,所以如果这个问题已经得到了回答,请原谅我。但我无法找到它。
1条答案
按热度按时间piv4azn71#
试试这个