●编号:
using Microsoft.AspNet.Identity
...
User.Identity.GetUserId()
那User.Identity.IsAuthenticated和User.Identity.Name将工作不添加using但GetUserId()将不存在没有它。
在MVC中5的默认模板,用户ID是作为字符串存储一个GUID。
●没有最好的做法还,但在扩展配置文件中找到:
概述Identity:
关于如何通过添加一个额外的属性来扩展配置文件示例解决方案:
2.
尝试像:
var userManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext()))
ApplicationUser user = userManager.FindByNameAsync(User.Identity.Name).Result
适用于RTM。
3.
试试这个:
var user = Membership.GetUser(User.Identity.Name)
Guid currentUserID = (Guid)user.ProviderUserKey
作品
什么是分配东西的MVC的5个最佳实践
我做在某种程度上你-在项目类中添加用户名。这是simpliest方式。
4.
获取标识是非常简单的,你已经解决了。
你的第二个问题,虽然是一个涉及多一点。
所以,这是所有抢鲜东西的权利 CodeGo.net,但你面临的问题是,你正在与新的属性扩展(或项目集合在你的问题)。
开箱即用的,你会得到一个名为IdentityModel在Models文件夹(在撰写本文时)。在那里你有几个班ApplicationUser和ApplicationDbContext。添加你的收藏Items你要修改ApplicationUser类,就像你,如果这是一个正常的类,你与实体事实上,如果你把引擎盖下咋一看,你会发现,所有的身份相关的类(用户,角色等..),只是现在波苏斯用适当的数据标注,使他们发挥好与EF6。
接下来,你需要做出改变AccountController构造函数,以便它知道你的DbContext。
public AccountController()
{
IdentityManager = new AuthenticationIdentityManager(
new IdentityStore(new ApplicationDbContext()))
}
现在越来越对象为您记录的是一点点深奥是诚实的。
var userWithItems = (ApplicationUser)await IdentityManager.Store.Users
.FindAsync(User.Identity.GetUserId(), CancellationToken.None)
这条线将完成这项工作,你就可以访问userWithItems.Items像你想要的。
心连心
5.
我觉得你的痛苦,我试图做的事。在我来说,我只是想清除
我创建了我所有的控制器从继承一个基控制器类。在这里面我重写OnAuthentication并设置filterContext.HttpContext.User to null这是最好的,我已经成功地远...
public abstract class ApplicationController : Controller
{
...
protected override void OnAuthentication(AuthenticationContext filterContext)
{
base.OnAuthentication(filterContext)
if ( ... )
{
// You may find that modifying the
// filterContext.HttpContext.User
// here works as desired.
// In my case I just set it to null
filterContext.HttpContext.User = null
}
}
...
}
1. 首先先创建数据库表,按你习惯的方法。2. 假设你已经有了显示产品的页面,路径结构是 /product/id
3. 找到显示product的action方法,在controller目录下ProductController.cs文件里找到index(int id)方法
4. 在index方法里你应该已经根据产品id从数据库中取出的product并且返回到View视图
5. 同样在Index方法里加入根据产品id从数据库中取出的产品评论的代码,并且返回到视图中
6. 在View里显示这个评论即可
>>Controller Action范例代码 <<
Index(int id){
ViewData["Product"] = _db.Product.FirstOrDefault(x=>x.Id = id)
ViewData["Comments"] = _db.Comment(x=>x.ProductId = id).ToList()
return View()
}
>>View范例代码 <<
<% var product = (Product)ViewData["Product"] %>
<% var comments = (List<Comment>)ViewData["Comments"] %>
产品名:<%= product.Name %>
售价:<%= product.Price %>
描述:<%= product.Description %>
评论:
<ul>
<% foreach(var comment in comments){ %>
<li><%= comment.Name %>: <%= comment.Comment %></li>
<% } %>
</ul>
** 以上代码仅供参考
var form = document.getElementById('form1')返回的form是html对象,所以并没有getElementsByName('dl')的方法,
可能是你把这个原生js当成jquery的选择器了。
var radios = form.getElementsByName('dl')
form改成document就行了
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)