Tag: asp.net mvc 5

如何在unit testing中模拟控制器上下文,以便我对字符串函数的部分视图有效?

我正在尝试为我的控制器创建一个unit testing,但我正在测试的操作使用部分视图来查看不希望在我的测试中工作的字符串函数。 private string RenderPartialViewToString(string viewName, object model = null) { if (string.IsNullOrEmpty(viewName)) viewName = ControllerContext.RouteData.GetRequiredString(“action”); ViewData.Model = model; using (System.IO.StringWriter sw = new System.IO.StringWriter()) { ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, viewName); ViewContext viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw); viewResult.View.Render(viewContext, sw); return sw.GetStringBuilder().ToString(); } } 这给了我一个错误“对象引用未设置为对象的实例”在ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, viewName); 我在控制器的unit testing中的设置是(删除了几个位以简化它): var mock […]

MVC5视图下拉列表

在C#MVC5 Internet应用程序视图中,如何显示下拉列表以供用户选择从“ View Model列表中填充的列表项? 这是ViewModel代码: public class MapLocationItemViewModel { [Editable(false)] public int mapLocationForeignKeyId { get; set; } public List mapLocationItemTypes { get; set; } public MapLocationItem mapLocationItem { get; set; } } 这是我目前在View的代码: @Html.LabelFor(model => model.mapLocationItem.mapLocationItemType, new { @class = “control-label col-md-2″ }) @Html.EditorFor(model => model.mapLocationItemTypes) mapLocationItemTypes中的每个项目当前都显示为class=”text-box single-line valid” 。 是否有MVC View标记,它将显示从list或array填充的list ? 我试过以下代码: @Html.DropDownListFor(model […]

如何在n层体系结构中将entity framework模型类与Business Layer类映射 – ASP.NET-MVC

我正在研究MVC框架(ASP.NET MVC5,Entity Framework 6)中的e层架构。 我的应用程序分为三个子项目,分别是业务层,数据访问层,存储库(包括存储库和工作单元)和ASP.NET MVC web-app。 我正在努力理解业务数据和entity framework模型之间的映射。 例如,如果我在entity framework中有模型类User DAL – 用户模型 [Table(“User”)] public class User { public User() { } [Key] public int UserID { get; set; } [StringLength(250)] [Required] public string FirstName { get; set; } [StringLength(250)] [Required] public string LastName { get; set; } [Required] public int Age { get; […]

MVC 5基于角色的身份validation

我试图将我们的“管理”页面锁定为仅使用Asp.net身份的管理员(我们在MVC5中构建)。 我可以[授权(用户=“管理员”)]工作,但不能[授权(角色=“管理员”)]工作。 我在dbo.AspNetRoles表中创建了该角色,然后通过将用户GUID与aspnetroles表中的ID配对,将该帐户与AspNetUserRoles相关联。 我在之前的MVC版本中看到,您必须进入web.config才能添加一些行。 谁能帮助我指出正确的方向?

如何在OWIN ASP.NET MVC5中注销用户

我有一个ASP.NET MVC5项目的标准AccountController类。 当我尝试注销用户时,我面临一个错误,因为HttpContext为null 。 (我的意思是HttpContext .GetOwinContext()。身份validation为空) 因此我无法了解会话结束时我们如何注销用户… 在global.asax我得到了这个 protected void Session_Start(object sender, EventArgs e) { Session.Timeout = 3; } protected void Session_End(object sender, EventArgs e) { try { var accountController = new AccountController(); accountController.SignOut(); } catch (Exception) { } } 的AccountController public void SignOut() { // Even if I do It does not help coz […]

.NET Framework中的复杂声明值与System.Security.Claims

我正在使用Asp.Net 5 MVC,Owin和Oauth2 bearer token作为auth类型开发一个Web应用程序。 按照本指南将Json序列化的自定义复杂声明成功添加到Microsoft.IdentityModel.Claims.ClaimsIdentity实例,我尝试使用System.Security.Claims命名空间上的ClaimsIdentity复制相同的示例。 不幸的是,似乎将一个complexClaim添加到ClaimsIdentity实例,派生的类类型信息将丢失,并且声明将存储为System.Security.Claims.Claim 。 var complexClaim = new ComplexClaim(@”http://it.test/currentpassport”, passport); var claims = new List() { complexClaim }; identity.AddClaims(claims); 当我尝试从身份中取回声明时,将其转换为ComplexClaim Type会产生空值。 var passportClaim = identity.Claims.FirstOrDefault(c=>c.Type == @”http://it.test/currentpassport”) as ComplexClaim; 相同的示例使用Microsoft.IdentityModel.Claims完美运行。 任何提示? 这是完整的移植代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Newtonsoft.Json; using System.Security.Claims; namespace ConsoleApplication1 { class Program […]

ASP MVC 5中的角色管理(Microsoft.AspNet.Identity)

在ASP MVC5 RC我没有让角色系统工作。 我的数据库有所有需要的表存在一个角色,但校对用户是否在角色中总是返回false(没有SQLexception或其他东西)! 我是否需要在某处激活IPrincipal角色系统? 测试代码: AccountController accCont = new AccountController(); // check role exist : result = true var roleExist = await accCont.IdentityManager.Roles.RoleExistsAsync(“61c84919-72e2-4114-9520-83a3e5f09de1”); // try find role by name : result = role object var role = await accCont.IdentityManager.Roles.FindRoleByNameAsync(“ProjectAdministrator”); // check with AccountController instance : result = true var exist = await accCont.IdentityManager.Roles.IsUserInRoleAsync(User.Identity.GetUserId(), role.Id); […]

ASP.NET身份2记住我 – 用户被注销

我在我的MVC5应用程序中使用Identity 2.1。 我将PasswordSignInAsync的isPersistent属性设置为true以启用“记住我”: var result = await SignInManager.PasswordSignInAsync(model.Username, model.Password, true, shouldLockout: false); 但是,如果我一夜之间保持登录状态,那么当我在早上刷新页面时,它会将我退出,我必须再次登录。 在用户手动注销之前,如何防止自动注销? 是否与身份使用的Cookie身份validation有关? 我真的不了解Startup.Auth.cs中设置的CookieAuthenticationOptions。 new CookieAuthenticationProvider { OnValidateIdentity = SecurityStampValidator .OnValidateIdentity( validateInterval: TimeSpan.FromMinutes(30), regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager)) }

ASP NET Web API中的路由 – 适用于不同版本的API

我正在从这里阅读Attribute Routing in Web API 2 文章说, Here are some other patterns that attribute routing makes easy. API versioning In this example, “/api/v1/products” would be routed to a different controller than “/api/v2/products”. /api/v1/products /api/v2/products 怎么会? 编辑:我会在正常路由中执行此操作: public static class WebApiConfig { public static void Register(HttpConfiguration config) { config.Routes.MapHttpRoute( name: “DefaultApi”, routeTemplate: “api/v2/products”, defaults: new { […]

MVC5的嵌套布局

我在这个主题上看了几篇post: Razor嵌套布局与层叠部分 MVC 3 – 嵌套布局 – 部分不在区域中渲染 它似乎总是有问题的。 然而,他们都很老了,所以想知道事情是否已经改变。 基本上我有一个主布局,以及3种不同的主体模板,基于它是什么类型的页面。 例如: _Layout.cshtml @Html.Partial(“_MenuPartial”) @RenderSection(“breadcrumbs”, true); @RenderBody(); @Html.Partial(“_FooterPartial”) @Html.Partial(“_ScriptInitPartial”) _LayoutForEdit.cshtml @RenderSection(“tabs”, true) @RenderBody() Save 现在,这在调用时渲染得很好。 几乎。 部分的呈现必须在它看起来的子布局中。 如果我尝试将面包屑放在_Layout.cshtml ,它将失败,因为_LayoutForEdit.cshtml从未呈现它。 我怎样才能解决这个问题? The following sections have been defined but have not been rendered for the layout page “~/Views/Shared/_LayoutForEdit.cshtml”: “breadcrumbs”.