gpt4 book ai didi

asp.net-mvc - 如何将 userId 传递到模型 ASP.NET MVC 中?

转载 作者:行者123 更新时间:2023-12-01 23:14:04 26 4
gpt4 key购买 nike

我已经进行了彻底的搜索,但真的找不到任何解决我所面临的情况的东西(奇怪的是因为我认为这是很常见的事情)。

背景

我正在使用 ASP.NET MVC 4 和 Entity Framework 5 Code First 创建一个应用程序。出于这个问题的目的,将其视为具有帖子和用户的博客应用程序。

项目

帖子模型要求每个帖子都有一个对应的 UserId。

使用 ASP.NET MVC 4 Membership 很容易找到登录用户的用户名

用户.Identity.Name

这并不理想,我们需要 ID,但是这样的查询可以在数据库中搜索名称并获取 ID。

db.UserProfiles.Single(a => a.UserName == User.Identity.Name);

问题

尝试创建帖子时出现问题。 Model.IsValid 为 false,因为没有从 View 传入 UserId。显然,因为不希望用户输入他们的 ID。

我已经尝试将 ID 值放入 ViewBag 并在 View 中使用 @Html.Hidden() 字段,但是我没有成功这个。 Model.IsValid 始终返回 false。

是否应该通过创建 View 输入此信息?还是应该直接在 Controller 中完成?这是一个非常令人沮丧的问题,因为我有信息并且只需要弄清楚如何将它传递到模型中。

Controller 代码

这基本上只是默认的脚手架代码。注释代码是我尝试直接从 Controller 设置模型值的方式,但这只不过是反复试验。

    //
// POST: /Post/Create

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(Post post)
{
if (ModelState.IsValid)
{
//var userId = db.UserProfiles.Single(a => a.UserName == User.Identity.Name);
//post.User.UserId = userId.UserId;
db.Posts.Add(post);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(post);
}

最佳答案

小心隐藏字段。任何人都可以在该字段中输入他们想要的任何值(即他们可以欺骗其他用户)。您最好在登录时在 session 中缓存 ID,并使用该值。

关于asp.net-mvc - 如何将 userId 传递到模型 ASP.NET MVC 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15643808/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com