Tag: asp.net core mvc

在渲染局部视图时如何调用控制器操作?

我正在为侧边栏创建部分视图,以显示我网站中最受欢迎的post。 如何创建一个单独的控制器来加载局部视图所需的模型? ( IEnumerable与热门post) 目前我已经创建了一个加载流行post的控制器类,但是在渲染部分时我一直遇到错误,因为我无法调用控制器并加载部分模型。 例如,如果我从我渲染单个post的视图中调用它,则模型类型将不匹配( Post vs IEnumerable ) 这是我的SidebarController : using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using GoBaron.Front.Models; namespace GoBaron.Front.Controllers { public class SidebarController : Controller { private readonly ApplicationDbContext _context; public SidebarController(ApplicationDbContext context) { _context = context; } public async Task PopularPosts() { return PartialView(await _context.Posts […]

ASP.NET vNext – MissingMethodException:找不到方法:Microsoft.CodeAnalysis.Diagnostic> EmitResult.get_Diagnostics()’

我今天早上升级到VS2015 RC,并使用ASP.NET 5模板 – 网站创建了一个新项目。 我有一个错误,我无法解决: 处理请求时发生未处理的exception。 MissingMethodException:找不到方法:’System .Collections.Immutable.ImmutableArray`1 Microsoft.CodeAnalysis.Emit.EmitResult.get_Diagnostics()’。 Microsoft.AspNet.Mvc.Razor.RoslynCompilationService.Compile(RelativeFileInfo fileInfo,String compilationContent) 这是完整的错误堆栈: MissingMethodException:找不到方法:’System.Collections.Immutable.ImmutableArray`1 Microsoft.CodeAnalysis.Emit.EmitResult.get_Diagnostics()’。 Microsoft.AspNet.Mvc.Razor.RoslynCompilationService.Compile(RelativeFileInfo fileInfo,String compilationContent) Microsoft.AspNet.Mvc.Razor.RazorCompilationService.Compile(RelativeFileInfo文件) Microsoft.AspNet.Mvc.Razor.CompilerCache.OnCacheMiss(RelativeFileInfo文件,String normalizedPath,Func`2编译) Microsoft.AspNet.Mvc.Razor.CompilerCache.GetOrAddCore(String relativePath,Func`2 compile) Microsoft.AspNet.Mvc.Razor.CompilerCache.GetOrAdd(String relativePath,Func`2 compile) Microsoft.AspNet.Mvc.Razor.VirtualPathRazorPageFactory.CreateInstance(String relativePath) Microsoft.AspNet.Mvc.Razor.RazorViewEngine.LocatePageFromViewLocations(ActionContext context,String pageName,Boolean isPartial) Microsoft.AspNet.Mvc.Razor.RazorViewEngine.GetRazorPageResult(ActionContext context,String pageName,Boolean isPartial) Microsoft.AspNet.Mvc.Razor.RazorViewEngine.FindView(ActionContext context,String viewName) Microsoft.AspNet.Mvc.Rendering.CompositeViewEngine.FindView(ActionContext context,String viewName,Boolean partial) Microsoft.AspNet.Mvc.Rendering.CompositeViewEngine.FindView(ActionContext context,String viewName) Microsoft.AspNet.Mvc.ViewResult.d__20.MoveNext() —从抛出exception的先前位置开始的堆栈跟踪结束— System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务) System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务) System.Runtime.CompilerServices.TaskAwaiter.GetResult() Microsoft.AspNet.Mvc.Core.FilterActionInvoker.d__44.MoveNext() —从抛出exception的先前位置开始的堆栈跟踪结束— […]

IEnumerable 在未引用的程序集中定义 – 新的NuGet类库项目

我正在使用VS2015社区,我安装了.NET 4.6.01040,并按照这些说明安装了ASP.NET 5。 我想开始将一个站点从MVC5迁移到MVC6所带来的所有其他更新,所以我开始使用包含我的Data模型的Entity Class库项目。 这是我的project.json文件的样子: { “version”: “1.0.0-*”, “description”: “test.Entities Class Library”, “authors”: [ “me” ], “tags”: [ “” ], “projectUrl”: “”, “licenseUrl”: “”, “frameworks”: { “net461”: { “dependencies”: { “System.Runtime”: “4.0.0.0” } }, “dotnet5.4”: { “dependencies”: { “Microsoft.CSharp”: “4.0.1-beta-23516”, “System.Runtime”: “4.0.21-beta-23516”, “System.Linq”: “4.0.1-beta-23516” “System.Collections”: “4.0.11-beta-23516”, “System.Threading”: “4.0.11-beta-23516” } } }, “dependencies”: { “EntityFramework.Core”: […]

必须提供“SignInScheme”选项

我正在创建一个仅使用Facebook / Google身份validation的ASP.NET 5 MVC 6应用程序。 我也试图在没有整个ASP.NET身份的情况下使用cookie中间件 – 遵循这篇文章: https : //docs.asp.net/en/latest/security/authentication/cookie.html 所以我开始使用没有身份validation的空白应用程序然后添加了Microsoft.AspNet.Authentication.Cookies和Microsoft.AspNet.Authentication.Facebook NuGet包,以便采用非常简约的方法,其中我不包含任何我不包含的内容需要。 我将以下代码添加到Startup.cs中的Configure中,但我得到“必须提供SignInScheme选项”错误。 知道我错过了什么吗? app.UseCookieAuthentication(options => { options.AuthenticationScheme = “MyCookieMiddlewareInstance”; options.LoginPath = new PathString(“/Accounts/Login/”); options.AccessDeniedPath = new PathString(“/Error/Unauthorized/”); options.AutomaticAuthenticate = true; options.AutomaticChallenge = true; }); app.UseFacebookAuthentication(options => { options.AppId = “myFacebookAppIdGoesHere”; options.AppSecret = “myFacebookAppSecretGoesHere”; });

AmbiguousActionException:匹配多个动作。 以下操作匹配路由数据并满足所有约束

我正在使用ASP.NET Core MVC创建一个网站。 当我点击某个动作时,我收到此错误: AmbiguousActionException: Multiple actions matched. The following actions matched route data and had all constraints satisfied: Web.Controllers.ChangeEventsController.Create (Web) Web.Controllers.ProductsController.CreateChangeEvent (Web) 这就是我在我的ProductsController的index.cshtmlm中定义我的动作的方法: Create Change Event 这是我的路线: app.UseMvc(routes => { routes.MapRoute( name: “default”, template: “{controller=Home}/{action=Index}/{id?}”); }); 以下是我定义操作的方式: // ChangeEventsController [HttpGet(“{id}”)] public IActionResult Create(Guid id) // ProductsController [HttpGet(“{id}”)] public IActionResult CreateChangeEvent(Guid id) 我做错了什么? 更新 感谢@MegaTron的回复,但是我想知道为什么我不能为不同的控制器提供相同的操作路径。 […]

从类型中获取DbSet

我正在尝试为MVC 6应用程序创建通用表查看器/编辑器。 我目前正在使用 Context.GetEntityTypes(); 给我一个表格列表。 现在我需要获取特定类型的数据。 我目前的实施是: // On my context public IQueryable GetDbSetByType(string fullname) { Type targetType = Type.GetType(fullname); var model = GetType() .GetRuntimeProperties() .Where(o => o.PropertyType.IsGenericType && o.PropertyType.GetGenericTypeDefinition() == typeof(DbSet) && o.PropertyType.GenericTypeArguments.Contains(targetType)) .FirstOrDefault(); if (null != model) { return (IQueryable)model.GetValue(this); } return null; } 在我的控制器中使用此代码 [HttpGet(“{requestedContext}/{requestedTable}/data”)] public IActionResult GetTableData(string requestedContext, string requestedTable) { […]

ASP.NET5 MVC6的模型绑定问题

我试图在角度表单上发布一些JSON数据到我的ASP.NET5 MVC6控制器动作。 模型绑定器似乎不起作用。 不知道我在这里缺少什么。 我的ASP控制器: public class DefaultController : Controller { public IActionResult Index() { return View(); } [HttpPost] public IActionResult SubmitTest(QTestViewModel model) { return Json(“true”); } } 我的角度控制器: angular.module(“testActiveMq”, []) .controller(“MqTestController”, [“$scope”, “$http”, function ($scope, $http) { // Submit Form $scope.submitForm = function () { debugger; var formData = (this.data) ? angular.toJson(this.data) : null; […]

无法使用Asp.NET Core中的Entity Framework添加带有视图的Scaffold> MVC Controller

当我尝试使用内置生成器添加Controller时,我收到以下错误消息: 其中“Brand”是模型类,“ApplicationDbContext”是我的数据上下文类。 我从来没有像这样经历过这样的错误。 它不会一直发生(2次成功与30-40次尝试而不更改单行代码)。 我能够在几分钟之前为同一个类创建Controller,但是当你尝试添加新内容并尝试超过10次而没有结果时,它真的很烦人。 当然,我可以编写自己的控制器和视图,但我真的很喜欢使用附带的工具。 我已经使用“添加或删除”中的“修改”选项修复了VS. 我正在使用最新的Microsoft Visual Studio社区(MVSC2015 V14.0.25425.01 Update3)。 编辑: Brand.cs: namespace AppBrander.Models { public class Brand { public int ID { get; set; } public string Email { get; set; } public string BrandName { get; set; } public string CompanyName { get; set; } public string Description { get; set; […]

有些值是null AJAX调用控制器ASP.Net Core

我正在尝试通过AJAX调用将对象通过表单传递给我的控制器。 这是对象,除AuctionId外,一切都返回null / 0 : public class BidModel { [JsonProperty(“BudID”)] public string BidId { get; set; } [JsonProperty(“Summa”)] public int Amount { get; set; } [JsonProperty(“AuktionID”)] public string AuctionId { get; set; } [JsonProperty(“Budgivare”)] public string Bidder { get; set; } } 表格: Lägg 这是AJAX调用: $(‘#createBid’).on(‘submit’, function (e) { e.preventDefault(); var $form = $(this); $.ajax({ […]

ASP.NET Core是否支持RESTful Web API的JSON Web签名?

我已经阅读了一些关于使用带有ASP.NET Core的JSON Web令牌来validation对REST API的请求的优秀教程,但是我找不到关于是否支持更常用的JSON Web签名(rfc7515)与REST API定义一起使用的文档。篡改保护请求的内容。 例如,以下Controller允许一个简单的POST请求,从而将JSON序列化的“CreateRequest”对象提交给API并进行处理: [Produces(“application/json”)] [Route(“api/WebService”)] public class WebServiceController { [HttpPost(“CreateRequest”)] public override IActionResult Create([FromBody] CreateRequest request) { if (request == null) { return BadRequest(); } else { // Do stuff with CreateRequest object … return new OkResult(); } } } 如果我想保护CreateRequest对象不被篡改传输JSON Web Signature似乎是一种很好的方法,但是如何在编码为BASE64并签名时让请求处理程序接受该对象,并且最好仅在签名validation时? 我知道保护内容的完整性可以通过其他方式解决,例如通过TLS加密连接,但暂时假设请求必须通过纯HTTP进行,内容在完整视图中。 因此,类似的JSON Web加密标准也不适合我的用例。