Questions tagged «asp.net-core-mvc»

ASP.NET Core MVC是一个轻量级的表示框架,用于使用ASP.NET Core创建动态网站。它允许创建基于控制器的MVC站点,或查看基于模型的Razor页面。MVC包括路由,模型绑定和验证,过滤器,Web API和Razor视图引擎等功能。

5
除Controller类之外的其他类的依赖注入
在这一点上,我可以轻松地将其注入Controller中,在某些情况下,可以构建自己的ResolverServices类。生活是美好的。 我无法弄清楚该怎么做,是要获得自动注入非控制器类的框架。起作用的是使框架自动注入到控制器中IOptions,这实际上是项目的配置: public class MessageCenterController : Controller { private readonly MyOptions _options; public MessageCenterController(IOptions<MyOptions> options) { _options = options.Value; } } 我在想我是否可以为自己的课程做同样的事情。我假设我在模仿控制器时就已经关闭了,就像这样: public class MyHelper { private readonly ProfileOptions _options; public MyHelper(IOptions<ProfileOptions> options) { _options = options.Value; } public bool CheckIt() { return _options.SomeBoolValue; } } 我认为我失败的地方是当我这样称呼它时: public void DoSomething() …


13
ASP.NET Core-静态类的访问配置
我想要一个简单的静态类来访问Configuration对象。已经从Startup类的appsettings.json文件中读取了所有配置信息。我只需要一种简单的方法即可访问它。这可能吗? namespace MyNamespace { public static class Config { public string Username => Configuration["Username"]; public string Password => Configuration["Password"]; } } 应用中的其他任何位置: string username = Config.Username; string password = Config.Password;

7
ASP.NET Core身份-获取当前用户
要获得MVC5中当前登录的用户,我们要做的就是: using Microsoft.AspNet.Identity; [Authorize] public IHttpActionResult DoSomething() { string currentUserId = User.Identity.GetUserId(); } 现在,我认为使用ASP.NET Core应该可以,但是会引发错误。 using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Http; private readonly UserManager<ApplicationUser> _userManager; [HttpPost] [Authorize] public async Task<IActionResult> StartSession() { var curUser = await _userManager.GetUserAsync(HttpContext.User); } 有任何想法吗? 编辑: Gerardo的响应已步入正轨,但要获得用户的实际“ Id”,这似乎可行: ClaimsPrincipal currentUser = this.User; var currentUserID = currentUser.FindFirst(ClaimTypes.NameIdentifier).Value;

8
在ASP.NET MVC Core中将枚举用作下拉列表
我试图在Razor视图中使用标记帮助器在ASP.NET MVC Core中创建一个带有枚举属性的下拉列表: 这是模型: public class PersonalMember : Member { [Required, Display(Name = "First Name")] public string FirstName { get; set; } [Required, Display(Name = "Last Name")] public string LastName { get; set; } [EnumDataType(typeof(Gender))] public Gender GenderType { get; set; } } public enum Gender { Male = 1, …

2
我迷路了。ASP.NET MVC 5发生了什么?
我一直不停地致力于各种项目,显然Microsoft一直在忙于进行一些大的更改,这使我感到困惑。去年我安装Visual Studio 2017并去创建一个新项目时,ASP.NET Core首次引起了我的注意,突然选择了.NET Framework,.NET Standard和.NET Core。因此,我仔细研究了一下它们,发现后两者在某种程度上是完整框架的缩写版本。我读了Scott Hanselman的这篇文章ASP.NET 5已经死了-在介绍ASP.NET Core 1.0和.NET Core 1.0时,我也发现了这一点,这使我远离了ASP.NET Core:在ASP.NET和ASP.NET Core之间进行选择。我的观点是“ Core是新的,您可以继续使用完整的框架。” 因此,我使用.NET Framework 4.6.2和Microsoft.AspNet.Mvc 5.2.3创建了一个新的ASP.NET MVC网站。 自创建该项目以来,我发现MVC和Entity Framework中似乎都存在一些错误,只是发现在Web上唯一提及它们的地方似乎是在Core中,并且这是唯一被视为已修复的地方。 现在,今天,我正在尝试查找有关System.Web.Mvc.Controller和System.Web.Mvc.JsonResult的文档,除了Core文档下的文档已消失。我终于在这里找到了它不再被维护的地方进行了挖掘? 我对Core非常了解,并说:“好吧,我为什么要关心?我将继续做我正在做的事情,并在完成后再检查一下。” 但是现在看来,甚至不再支持4.6.2。有人可以解释发生了什么吗?我的NET 4.6.2 / MVC 5.2.3项目现在已经过时了吗?如果不是,为什么将这些文档退却并隐藏起来?我担心我的某些依赖项可能甚至无法用于Core或与Core兼容。

4
如何在ASP.NET 5 MVC 6(vNext)中定义身份的密码规则?
默认情况下,ASP.NET 5中提供的默认身份提供程序具有非常严格的密码规则,要求使用小写字母,大写字母,非字母数字字符和数字。我正在寻找一种更改提供商密码要求的方法。 以前在ASP.NET 4中,可以通过Web.config XML文件配置提供程序,如先前所回答。但是,ASP.NET 5使用基于新代码的配置模式,目前尚不清楚如何配置身份。 如何更改应用程序的密码要求?

2
在ASP.NET Core中读取环境变量
使用DNX运行我的ASP.NET Core应用程序,我能够从命令行设置环境变量,然后像这样运行它: set ASPNET_ENV = Production dnx web 在1.0中使用相同的方法: set ASPNETCORE_ENVIRONMENT = Production dotnet run 不起作用-该应用程序似乎无法读取环境变量。 Console.WriteLine(Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")); 返回null 我想念什么?

4
ASP.Net-Core中的自定义身份验证
我正在开发需要与现有用户数据库集成的Web应用程序。我仍然想使用[Authorize]属性,但是我不想使用Identity框架。如果我确实想使用Identity框架,则可以在startup.cs文件中添加以下内容: services.AddIdentity<ApplicationUser, IdentityRole>(options => { options.Password.RequireNonLetterOrDigit = false; }).AddEntityFrameworkStores<ApplicationDbContext>() .AddDefaultTokenProviders(); 我假设我必须在此添加其他内容,然后创建某种实现特定接口的类?有人可以指出我正确的方向吗?我现在正在使用asp.net 5的RC1。

6
如何在ASP.NET Core中获取网站的基本URL?
假设我的网站托管在www.example.com的mywebsite文件夹中,并且我访问https://www.example.com/mywebsite/home/about。 如何在MVC控制器中获取基本网址部分?我要寻找的部分是https://www.example.com/mywebsite 由于我们无权访问ASP.NET Core中的Request.Url,因此此处列出的示例不起作用

4
从显式类型的ASP.NET Core API控制器(不是IActionResult)返回404
ASP.NET Core API控制器通常返回显式类型(如果创建新项目,则默认情况下会这样做),例如: [Route("api/[controller]")] public class ThingsController : Controller { // GET api/things [HttpGet] public async Task<IEnumerable<Thing>> GetAsync() { //... } // GET api/things/5 [HttpGet("{id}")] public async Task<Thing> GetAsync(int id) { Thing thingFromDB = await GetThingFromDBAsync(); if(thingFromDB == null) return null; // This returns HTTP 204 // Process thingFromDB, blah …

3
将复杂对象存储在TempData中
我一直在尝试通过使用TempData的重定向将数据传递给操作,如下所示: if (!ModelState.IsValid) { TempData["ErrorMessages"] = ModelState; return RedirectToAction("Product", "ProductDetails", new { code = model.ProductCode }); } 但不幸的是,它失败并显示以下消息: “System.InvalidOperationException的 Microsoft.AspNet.Mvc.SessionStateTempDataProvider'不能序列类型的对象'ModelStateDictionary'到会话状态”。 我在Github的MVC项目中发现了一个问题,但是尽管它解释了为什么我会收到此错误,但我看不到什么是可行的选择。 一种选择是将对象序列化为json字符串,然后反序列化它并重建ModelState。这是最好的方法吗?我是否需要考虑任何潜在的性能问题? 最后,对于序列化复杂对象或使用不涉及使用的其他模式,是否有其他选择TempData?

3
ASP.NET Core Razor页面与完整MVC Core
SO上存在一个问题,为什么Razor Pages是在Asp.net Core 2.0中创建Web UI的推荐方法?史蒂夫·史密斯(Steve Smith)从减少文件数量的角度,亲切地解释了使用剃刀页面优于完整MVC的好处。 我使用Razor Pages已有一段时间,并注意到,尽管Razor Page简单性有优势,但在自定义路由,结构化文件夹和复杂的视图模型(页面模型看起来很杂乱)方面还是有点复杂。 因此,问题是: 如果除了页面的简单性之外,还有其他什么比“控制器/视图”更喜欢Razor页面-特别是我对这两个框架的性能感兴趣? 可以同时合并“剃刀页面”和“控制器/视图”吗? 如果某些经验丰富的人分享了您对使用Razor Pages更好地理解此框架的想法(利弊),我也将不胜感激。


4
Asp.Net Core MVC中的Request.IsAjaxRequest()在哪里?
若要了解有关令人兴奋的新Asp.Net-5框架的更多信息,我试图使用新发布的Visual Studio 2015 CTP-6构建Web应用程序。 大多数事情看起来确实很有希望,但是我似乎找不到Request.IsAjaxRequest()-我在较老的MVC项目中经常使用的功能。 有没有更好的方法可以做到这一点-迫使他们删除此方法-还是“隐藏”在其他地方? 感谢您对在哪里找到它或该怎么做的任何建议!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.