将 post 从文本区域保存到 Razor 页面 Web 应用程序中的数据库
Saving post from textarea to database in Razor pages WebApplication
我正在尝试在 Visual Studio 中的 ASP.NET 核心 Web 应用程序上构建社交网络。
有成员资格和墙,成员可以在那里制作 posts。
我正在使用带有编辑工具的 textarea
的 Tinymce,我应该将 HTML 格式的 textarea
中的文本保存到我的本地 Visual Studio 数据库中,以及与正在 posting.
的已连接用户的 UserId
当我 运行 应用程序并尝试 post 时,这些似乎都不起作用。我在数据库中为 Text
和 UserId
.
获取了一个 null
条目
虽然 UserManager
在 .cshtml
文件上正常工作并且 return 在 UserId
上工作,但我无法让它在 .cs
上工作文件
.cshtml
文件的相关代码:
@using Microsoft.AspNetCore.Identity
@inject UserManager<ApplicationUser> UserManager
@model IndexModel
@{
ViewData["Title"] = "Home page";
}
<form asp-route-returnUrl="@Model.ReturnUrl" method="post" enctype="multipart/form-data" asp-controller="UploadFiles" asp-action="Index">
<div class="form-group">
<p>You are connected and can post as @UserManager.GetUserId(User)</p>
<textarea name="txt" id="mytextarea" rows="2" cols="80" asp-for="Posts.Text" >
</textarea>
</div>
<br />
<div class="form-group">
<input type="submit" value="Post" class="btn btn-default" />
</div>
</form>
.cs
文件的相关代码:
private readonly proj.Data.ApplicationDbContext _context;
public IndexModel(proj.Data.ApplicationDbContext context)
{
_context = context;
}
public Models.Posts Posts { get; set; }
public async Task<IActionResult> OnPostAsync(string returnUrl = null)
{
UserManager<Data.ApplicationUser> UserManager;
var post = new Models.Posts {UserId = UserManager.GetUserId(User), Text = Posts.Text };
_context.Posts.Add(post);
await _context.SaveChangesAsync();
return Page();
}
我收到 UserManager
的 "unassigned local variable" 错误。
你能帮我正确获取textarea
的内容,并正确定义UserManager
吗?
你好像用过Depend injection 所以你可以试试constructor injection
private readonly proj.Data.ApplicationDbContext _context;
private UserManager<Data.ApplicationUser> _userMannger;
public IndexModel(proj.Data.ApplicationDbContext context,
UserManager<Data.ApplicationUser> user)
{
_userMannger= user;
_context = context;
}
public Models.Posts Posts { get; set; }
public async Task<IActionResult> OnPostAsync(string returnUrl = null)
{
var post = new Models.Posts {UserId = _userMannger.GetUserId(User), Text = Posts.Text };
_context.Posts.Add(post);
await _context.SaveChangesAsync();
return Page();
}
我解决了 textarea
问题。
该行应该是这样的:
<textarea asp-for="Posts.Text" id="mytextarea" rows="2" cols="80" class="form-control"></textarea>
我忘记包含 class="form-control"
并且 name="txt"
不知何故导致了问题,需要被省略。
我正在尝试在 Visual Studio 中的 ASP.NET 核心 Web 应用程序上构建社交网络。
有成员资格和墙,成员可以在那里制作 posts。
我正在使用带有编辑工具的 textarea
的 Tinymce,我应该将 HTML 格式的 textarea
中的文本保存到我的本地 Visual Studio 数据库中,以及与正在 posting.
UserId
当我 运行 应用程序并尝试 post 时,这些似乎都不起作用。我在数据库中为 Text
和 UserId
.
null
条目
虽然 UserManager
在 .cshtml
文件上正常工作并且 return 在 UserId
上工作,但我无法让它在 .cs
上工作文件
.cshtml
文件的相关代码:
@using Microsoft.AspNetCore.Identity
@inject UserManager<ApplicationUser> UserManager
@model IndexModel
@{
ViewData["Title"] = "Home page";
}
<form asp-route-returnUrl="@Model.ReturnUrl" method="post" enctype="multipart/form-data" asp-controller="UploadFiles" asp-action="Index">
<div class="form-group">
<p>You are connected and can post as @UserManager.GetUserId(User)</p>
<textarea name="txt" id="mytextarea" rows="2" cols="80" asp-for="Posts.Text" >
</textarea>
</div>
<br />
<div class="form-group">
<input type="submit" value="Post" class="btn btn-default" />
</div>
</form>
.cs
文件的相关代码:
private readonly proj.Data.ApplicationDbContext _context;
public IndexModel(proj.Data.ApplicationDbContext context)
{
_context = context;
}
public Models.Posts Posts { get; set; }
public async Task<IActionResult> OnPostAsync(string returnUrl = null)
{
UserManager<Data.ApplicationUser> UserManager;
var post = new Models.Posts {UserId = UserManager.GetUserId(User), Text = Posts.Text };
_context.Posts.Add(post);
await _context.SaveChangesAsync();
return Page();
}
我收到 UserManager
的 "unassigned local variable" 错误。
你能帮我正确获取textarea
的内容,并正确定义UserManager
吗?
你好像用过Depend injection 所以你可以试试constructor injection
private readonly proj.Data.ApplicationDbContext _context;
private UserManager<Data.ApplicationUser> _userMannger;
public IndexModel(proj.Data.ApplicationDbContext context,
UserManager<Data.ApplicationUser> user)
{
_userMannger= user;
_context = context;
}
public Models.Posts Posts { get; set; }
public async Task<IActionResult> OnPostAsync(string returnUrl = null)
{
var post = new Models.Posts {UserId = _userMannger.GetUserId(User), Text = Posts.Text };
_context.Posts.Add(post);
await _context.SaveChangesAsync();
return Page();
}
我解决了 textarea
问题。
该行应该是这样的:
<textarea asp-for="Posts.Text" id="mytextarea" rows="2" cols="80" class="form-control"></textarea>
我忘记包含 class="form-control"
并且 name="txt"
不知何故导致了问题,需要被省略。