正如問題所說,我正試圖弄清楚到底如何才能讓用戶登錄時只看到他們輸入資料庫的資料條目。我使用ASP.NET Core Web App(Model-View_Controller)模板來開始。
public class Item
{
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public string Power { get; set; }
public string Charges { get; set; }
public Item(){
}
這就是問題的資料,即專案模型。我最初的想法是,我需要在AspNetUsers表和Items表之間建立一對多的關系,然后在Items控制器中改變一些東西,但我不完全確定如何/是否可以對AspNetUsers表進行編輯。
public class ItemsController : Controller
{
private readonly ApplicationDbContext _context;
public ItemsController(ApplicationDbContext context)
{
_context = 背景關系。
}
//GET: 專案
public async Task<IActionResult> Index()
{
//Return a list to the view
return View(await _context.Item.ToListAsync() )。)
}
public async Task<IActionResult> SearchItems()
{
return View()。
}
public async Task<IActionResult> ShowSearchResults(String SearchPhrase)
{
/Return a list from index where
return View("Index", await _context.Item.Where(j => j.Name. Contains(SearchPhrase)).ToListAsync())
}
// GET: 專案/細節/5
public async Task< IActionResult> Details(int? id)
{
if (id == null)
{
return NotFound()。
}
var item = await _context.Item
.FirstOrDefaultAsync(m => m.Id == id)。
if (item == null)
{
return NotFound()。
}
return View(item);
}
// GET: 專案/創建
[授權]
public IActionResult Create()
{
return View()。
}
// POST: 專案/創建
// 為防止過度張貼的攻擊,啟用你想系結的特定屬性,對于來說
//更多詳情,請參見http://go.microsoft.com/fwlink/?LinkId=317598。
[授權]
[HttpPost]
[ValidateAntiForgeryToken[/span]]
public async Task< IActionResult> 創建([Bind("Id,Name,Description,Power,Charges"/span>)] 物品專案)
{
if (ModelState.IsValid)
{
_context.Add(item)。
await _context.SaveChangesAsync()。
return RedirectToAction(nameof(Index))。
}
return View(item);
}
// GET: 專案/編輯/5
[授權]
public async Task< IActionResult> Edit(int? id)
{
if (id == null)
{
return NotFound()。
}
var item = await _context.Item.FindAsync(id)。
if (item == null)
{
return NotFound()。
}
return View(item);
}
// POST: 專案/編輯/5
// 為防止過度張貼的攻擊,請啟用你想系結的特定屬性,對于來說
//更多詳情,請參見http://go.microsoft.com/fwlink/?LinkId=317598。
[授權]
[HttpPost]
[ValidateAntiForgeryToken[/span]]
public async Task< IActionResult> Edit(int id, [Bind("Id, Name, Description, Power, Charges") ] Item item)
{
if (id != item.Id)
{
return NotFound()。
}
if (ModelState.IsValid)
{
try (ModelState.IsValid).
{
_context.Update(item)。
await _context.SaveChangesAsync()。
}
catch (DbUpdateConcurrencyException)
{
if (!ItemExists(item.Id))
{
return NotFound()。
}
else[/span
{
throw;
}
}
return RedirectToAction(nameof(Index))。
}
return View(item);
}
// GET: 專案/洗掉/5
[授權]
public async Task< IActionResult> Delete(int? id)
{
if (id == null)
{
return NotFound()。
}
var item = await _context.Item
.FirstOrDefaultAsync(m => m.Id == id)。
if (item == null)
{
return NotFound()。
}
return View(item);
}
// POST: 專案/洗掉/5
[Authorize]。
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public async Task< IActionResult> DeleteConfirmed(int id)。
{
var item = await _context.Item.FindAsync(id)。
_context.Item.Remove(item)。
await _context.SaveChangesAsync()。
return RedirectToAction(nameof(Index))。
}
private bool ItemExists title">ItemExists(int id)。
{
return _context.Item.Any(e => e.Id == id)。
}
這就是專案控制器。如果我需要提供更多的資訊,我可以。
uj5u.com熱心網友回復:
但是我不完全確定如何/是否可以對AspNetUsers表進行編輯。
你可以從IdentityUser繼承到自定義用戶資料。
下面是一個作業演示,你可以遵循:
模型:public class ApplicationUser: IdentityUser
{
public List< Item> Items { get; set; }
}
public class Item
{
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public string Power { get; set; }
public string Charges { get; set; }
public ApplicationUser ApplicationUser { get; set; }
控制器:
public class ItemsController : Controller
{
private readonly ApplicationDbContext _context;
public ItemsController(ApplicationDbContext context)
{
_context = 背景關系。
}
//GET: 專案
public async Task<IActionResult> Index()
{
var model = await _context.Item
.Where(a => a.ApplicationUser.Id == HttpContext.User.FindFirst(ClaimTypes.NameIdentifier).Value)
.ToListAsync()。
return View(model)。
}
DbContext:
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)。
{
}
public DbSet<Item> Item { get; set; }
Startup.cs:
services.AddDefaultIdentity<ApplicationUser> (options => options.SignIn.RequireConfirmedAccount = true)
.AddEntityFrameworkStores<ApplicationDbContext>()。
更新Pages/Shared/_LoginPartial.cshtml,用ApplicationUser替換IdentityUser:
@using Microsoft.AspNetCore.Identity
@inject SignInManager<ApplicationUser> SignInManager
@inject UserManager<ApplicationUser> UserManager
結果:
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/319214.html
標籤:
上一篇:帶檔案路徑的boto3下載

