asp.net-mvc – 如何将userId传递给模型ASP.NET MVC?
我有一个彻底的搜索,但实际上找不到任何解决我面临的情况的事情(奇怪的是因为我认为这是很常见的事情).
背景 我正在使用ASP.NET MVC 4和Entity Framework 5 Code First创建一个应用程序.出于此问题的目的,将其视为具有帖子和用户的博客应用程序. 项目 帖子模型要求每个帖子都有相应的UserId. 使用ASP.NET MVC 4 Membership,很容易找到登录用户的用户名 User.Identity.Name. 这不是理想的,我们需要ID,但是像这样的查询可以在db中搜索名称并获取ID. db.UserProfiles.Single(a => a.UserName == User.Identity.Name); 问题 尝试创建帖子时会出现问题. Model.IsValid为false,因为没有从视图传入UserId.显然,因为不希望用户输入他们的ID. 我已经尝试将ID值放入ViewBag并在视图中使用@ Html.Hidden()字段,但是我没有成功. Model.IsValid始终返回false. 是否应通过创建视图输入此信息?或者应该直接在控制器中完成?这是一个令人沮丧的问题,因为我有信息,只需要知道如何将其传递到模型中. 控制器代码 这基本上只是默认的脚手架代码.注释代码是我尝试直接从控制器设置模型值的方式,但这只是试验和错误. // // 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); } 解决方法
小心隐藏的字段.任何人都可以在该领域中放置他们想要的任何价值(即他们可以欺骗另一个用户).您最好在登录时缓存会话中的ID,并使用该值.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc-3 – KnockoutJs Observable Arrays和Dropdown
- 解决asp.net上传文件超过了最大请求长度的问题
- asp.net – 下载文件时ASP.MVC会话丢失
- 允许未经身份验证的用户使用ASP.Net表单身份验证访问特定页
- asp.net – 剃刀视图引擎自动应用报价?
- ASP.NET服务与存储库层
- reportviewer – 在ASP.NET MVC中的RDLC报表中看不到或添加
- [转]谈谈技术原则,技术学习方法,代码阅读及其它
- asp.net-mvc – ASP MVC ChildActionOnly应该有路由
- asp.net-mvc – 具有复杂路径的ASP.Net MVC – 如何保持“理
- asp.net-mvc – 使用Data Annotation验证DateTim
- asp.net-mvc-3 – 使用ViewData将字符串从Contro
- asp.net – Web API的XML帮助文档未在发布时更新
- asp.net-mvc – 何时公开IEnumerable而不是IColl
- asp.net – 使用基于令牌的身份验证时,Web API 2
- asp.net-mvc – Uploadify(会话和身份验证)与ASP
- asp.net-mvc – IIS 7与IIS Express的路由错误,生
- ASP.NET LoginUser.DestinationPageUrl无法正常工
- asp.net-mvc – 使用默认控制器的ASP.NET MVC路由
- asp.net – 用户定义的CSS /样式