在razor页面中将文章从textarea保存到数据库WebApplication

时间:2018-06-04 20:53:19

标签: c# html asp.net web-applications razor-pages

我试图在Visual Studio中的ASP.NET核心Web应用程序上构建社交网络。 有会员和墙,会员可以发帖。 我使用Tinymce作为textarea的编辑工具,我应该将textarea格式的文本以HTML格式保存到我的本地Visual Studio数据库,以及{正在发布的已连接用户的{1}}。

当我运行应用程序并尝试发布时,这些似乎都不起作用。我在数据库中为UserIdnull获得了Text条目。

虽然UserIdUserManager文件上正常运行并确实返回.cshtml,但我无法在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

我得到一个&#34;未分配的局部变量&#34; 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的内容,并正确定义textarea吗?

2 个答案:

答案 0 :(得分:1)

您似乎使用了依赖注入,因此您可以尝试构造函数注入

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();
}

答案 1 :(得分:0)

我发现了textarea问题。 该行应该是这样的:

<textarea asp-for="Posts.Text" id="mytextarea" rows="2" cols="80" class="form-control"></textarea>

我忘了包含class="form-control"name="txt"以某种方式导致问题,需要省略。