Tag: asp.net mvc 5

Web API 2 / MVC 5:属性路由将参数作为查询字符串传递,以在同一控制器上定位不同的操作

我一直在使用新的Web API 2(看起来非常有前途)但我有点头疼让一些路由工作。 当我有GetAllUsers / GetUser(int id)时,一切正常,但是当我添加GetUserByName(字符串名称)和/或GetUserByUsername(字符串用户名)时,事情开始令人毛骨悚然。 我知道int将是第一个,我可以重新排序路线,但让我们想象下面的场景: 用户可以拥有有效的username=1234或者name=1234 (我知道它不太可能,但我们需要防止任何可能的情况)我们可能在数据库中有一个有效的1234 ID,并且所有路由都将被混淆。 也许这是我们需要在新的WebAPI 2上使用的东西,所以我想我可以带来一个“解决方法”,将filter作为查询字符串传递给同一个控制器中的不同操作,例如api/users/?username=1234 (GetUserByUsername)或api/users/?name=1234 (GetUserByName) 但我不能让查询字符串通过……实际上上面的任何查询字符串选项都被GetAllUsers捕获。 有没有人对这种情况有任何建议/解决方案? 非常感谢

如何将OnAuthenticated事件中的信息传递给控制器​​和SignIn?

正如我在这里发现的那样 ,我无法打电话 HttpContext.GetOwinContext().Authentication.SignIn(…) 在FacebookAuthenticationProvider OnAuthenticated事件。 这似乎是一个不同的背景。 我的用户将来自Facebook,这意味着我将需要检索id , email等数据……这些信息可以通过OnAuthenticated事件访问,我需要这些信息才能登录。 我需要在我的控制器上访问这些信息…… 我在活动中试过这个: context.OwinContext.Set(“FacebookUser”, rawUserObjectFromFacebookAsJson); 但是在控制器上如果我尝试检索它,它就是null。 var fbuser = HttpContext.GetOwinContext() .Get(“FacebookUser”); 所以我的问题是,如何将这些数据传递给控制器​​,以便我可以登录?

如何在ASP.NET Identity 1.1中每晚构建一个TokenProvider?

我正在尝试使用ASP.NET Identity 1.1的每晚构建实现密码重置function。 有一个UserManager.GetPasswordResetToken方法,但它会抛出exception“没有注册ITokenProvider”。 ASP.NET身份中是否有内置的令牌提供程序? 如果是,我如何注册? 如果不是,我该如何实施呢? 将是1.1中的默认令牌提供程序。 发布? 最后一个问题,是否有估计的1.1发布日期?

AspNetUsers(身份)与自定义表之间的一对多关系

我迫切希望在Identity 2.0的AspNetUsers表和一个名为Map的自定义表之间创建一对多的关系(一个用户可以有很多地图,但一个地图只能有一个用户)我已经尝试了大多数可用的解决方案这个网站也失去了很多天尝试在网络上找到的其他soulutions。 我被卡住了。 似乎没有什么对我有用。 我是MVC和EF的新手,所以基本上我认为我需要一些循序渐进的指南。 任何人都可以非常友好地为我提供一个新手指南,以实现这一点,从一个新的MVC5项目。 谢谢,对不起我提出的冗余问题。 PS。 我可以成功创建两个自定义表之间的关系,但不能在AspNetUsers和我的Map表之间创建。 非常感谢提前。

如何将Autofac与WepApi 2和Owin集成?

我正在使用此软件包将Autofac与我的WebApi Owin应用程序集成: https://www.nuget.org/packages/Autofac.WebApi2.Owin 并关注这篇文章: http://alexmg.com/owin-support-for-the-web-api-2-and-mvc-5-integrations-in-autofac/ 我在Startup.cs中的代码如下所示: var config = new HttpConfiguration(); IContainer container = EngineContext.InitializeEngine(); var dependencyResolver = new AutofacWebApiDependencyResolver(container); config.DependencyResolver = dependencyResolver; app.UseAutofacMiddleware(container); app.UseAutofacWebApi(config); WebApiConfig.Register(config); app.UseWebApi(config); 无论我如何旋转它,重新排列代码或其他任何东西,Autofac都无法解决任何问题。 在Owin之前,我的Global.asax方法运行得很好: protected void Application_Start() { IContainer container = EngineContext.InitializeEngine(); var dependencyResolver = new AutofacWebApiDependencyResolver(container); GlobalConfiguration.Configuration.DependencyResolver = dependencyResolver; GlobalConfiguration.Configure(WebApiConfig.Register); } 我错过了什么? 谢谢

如何在ASP.NET MVC 5中列出具有角色名称的用户

我有ASP.NET MVC 5网站的默认项目模板,我试图列出具有角色名称(而不是ID)的所有用户。 查询是: db.Users.Include(u => u.Roles).ToList() 然后我想用以下内容打印角色名称: @string.Join(“, “, user.Roles.Select(r => r.RoleId)) 问题是我只能访问RoleId ,而不能访问存储Name和其他属性的Role类。 我可以运行另一个select来获取所有角色,然后将其用作查找。 或直接在查询中写一个连接? 我不确定如何,因为我无法访问具有绑定用户和角色的IdentityUserRole实体的表。 问题的根源似乎是IdentityUserRole (不是Role )的Roles集合, RoleId包含RoleId和UserId 。 public class IdentityUserRole { public virtual TKey RoleId { get; set; } public virtual TKey UserId { get; set; } } 我认为如果想在EF中建立N对N关系,他们应该直接收集Roles ,然后重写OnModelCreating并指定关系。 这种方法似乎使从一个对象浏览对象变得复杂。 为什么他们决定将IdentityUserRole作为额外实体包含在内? 能够在关系中添加额外数据吗? 代价是无法从用户导航到角色?

了解MVC-5身份

我使用Individual User Accounts创建了一个新的ASP.NET MVC-5应用程序,然后更新了解决方案中的所有Nuget packages 。 现在我试图遵循一些教程中显示的一些指导原则,但我遇到了一些问题。 第一个是没有创建在整个应用程序中使用的名为ApplicationRoleManager的类( ApplicationUserManager已创建)。 第二个问题更多的是关于Entity-Framework :我已经看到,为了用一个用户和角色播种数据库,许多人在ApplicationDbContext类中创建一个静态构造函数: static ApplicationDbContext() { Database.SetInitializer(new ApplicationDbInitializer()); } 所以我添加了它, ApplicationDbInitializer的实现是: public class ApplicationDbInitializer : DropCreateDatabaseIfModelChanges { protected override void Seed(ApplicationDbContext context) { InitializeIdentityForEF(context); base.Seed(context); } //Create User=Admin@Admin.com with password=Admin@123456 in the Admin role public static void InitializeIdentityForEF(ApplicationDbContext db) { var userManager = HttpContext.Current.GetOwinContext().GetUserManager(); var roleManager = […]

如何将JSON结果返回给Ajax.BeginForm

我有这个简单的forms: @using (Ajax.BeginForm(“CreateProductFromAjaxForm”,”Product” , null, new AjaxOptions() { HttpMethod = “post”, OnSuccess = “getresult” }, null)) { @Html.EditorFor(m => m) } 并且,为了测试,一个简单的控制器: [HttpPost] public JsonResult CreateProductFromAjaxForm(CreateProductModel model) { if (!ModelState.IsValid) { return new JsonResult() { JsonRequestBehavior = JsonRequestBehavior.AllowGet, Data = new { result = “error” } }; } //add to database return new JsonResult() { […]

Visual Studio 2015 – Web项目中缺少共享项目参考选项卡

我从MSDN订阅升级到Visual Studio 2015,因为我很高兴阅读有关共享项目的内容…当我们想要做的只是重用代码时,不再需要在我们的依赖项中管理21382个nuget包。 所以我构建了一个测试共享项目,其中包含一些代码。 然后我在.Net 4.6上添加一个新的空Web应用程序到项目中。 现在我希望转到引用并在引用窗口中看到“共享项目”选项卡,但我没有看到。 现在我可以将类库添加到同一个解决方案中,然后我会看到选项卡并添加共享引用。 但是,我无法将共享项目添加到我的Web应用程序。 我非常希望我可以使用这个概念与多个MVC项目共享视图。 我在这里遗漏了什么,或者是与Web项目不兼容的共享项目? 我看到的唯一方法是为我构建的每个Web应用程序提供两个项目。 代码为1,内容为1。 例如 XYZ.SomeWebSite.Code (Class Library Project Type) -> references Shared Project XYZ.SomeWebSite (Web Project Type) 然而,走这条路线,我无法将视图,文本文件,CSS文件,javascript文件等推送到Web应用程序中。

没有Owin的Asp.Net MVC 5?

Mvc 5似乎依赖于Owin,如果你想自己托管或在Mac上运行,那就太棒了。 但是我们假设我只想在IIS下运行,就像以前的版本一样,我对Owin提供的东西不感兴趣。 默认的“空白”mvc5模板使用owin和其他15个依赖项。 我已经尝试逐个删除软件包,但似乎网站不知道如何在不使用Owin的属性的情况下启动。 那么,如何在没有Owin的iis下获得ASP.net,mvc 5?