- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经按照下一个例子 Link to source
当我创建我的 Controller (应该与他的 TripsController 相同)以返回带有数据的 Ok 时,浏览器未解析为 HTML,它仅在浏览器中显示 json 格式。
using System;
using System.Collections.Generic;
using AutoMapper;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using RnD.Models.Repository;
using RnD.Models.ViewModels;
namespace RnD.Controllers.Web
{
[Route("/machines")]
[Authorize]
public class MachineTypeController : Controller
{
private ILogger<MachineTypeController> _logger;
private IMachineTypeRepository _repository;
public MachineTypeController(IMachineTypeRepository repository, ILogger<MachineTypeController> logger)
{
_logger = logger;
_repository = repository;
}
[HttpGet("")]
public IActionResult Index()
{
try
{
var results = _repository.GetAllMachineTypes();
return Ok(Mapper.Map<IEnumerable<MachineTypeViewModel>>(results));
}
catch (Exception ex)
{
_logger.LogError($"Failed to get all Machine types: {ex}");
return BadRequest("Error Occurred");
}
}
}
}
如果我返回 View ,它将正常工作。
这是Startup.cs
using System.Threading.Tasks;
using AutoMapper;
using Microsoft.AspNetCore.Authentication.Cookies;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json.Serialization;
using RnD.Models.DataFixtures;
using RnD.Models.Entity;
using RnD.Models.Repository;
using RnD.Models.ViewModels;
namespace RnD
{
public class Startup
{
private IHostingEnvironment _env;
private IConfigurationRoot _config;
public Startup(IHostingEnvironment env)
{
_env = env;
var builder = new ConfigurationBuilder()
.SetBasePath(_env.ContentRootPath)
.AddJsonFile("config.json")
.AddEnvironmentVariables();
_config = builder.Build();
}
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton(_config);
services.AddDbContext<RnDContext>();
services.AddIdentity<ApplicationUser, IdentityRole>(config =>
{
config.User.RequireUniqueEmail = false;
config.Password.RequireDigit = false;
config.Password.RequireUppercase = false;
config.Password.RequiredLength = 8;
config.Cookies.ApplicationCookie.LoginPath = "/auth/login";
config.Cookies.ApplicationCookie.Events = new CookieAuthenticationEvents()
{
OnRedirectToLogin = async ctx =>
{
if (ctx.Request.Path.StartsWithSegments("/api") && ctx.Response.StatusCode == 200)
{
ctx.Response.StatusCode = 401;
}
else
{
ctx.Response.Redirect(ctx.RedirectUri);
}
await Task.Yield();
}
};
}).AddEntityFrameworkStores<RnDContext>();
services.AddScoped<IMachineTypeRepository, MachineTypeRepository>();
services.AddTransient<RnDContextSeedData>();
services.AddLogging();
services.AddMvc(config =>
{
if (_env.IsProduction())
{
config.Filters.Add(new RequireHttpsAttribute());
}
})
.AddJsonOptions(config =>
{
config.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
});
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app,
IHostingEnvironment env,
RnDContextSeedData seeder,
ILoggerFactory loggerFactory
)
{
Mapper.Initialize(config =>
{
config.CreateMap<MachineTypeViewModel, MachineType>().ReverseMap();
});
loggerFactory.AddConsole();
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
loggerFactory.AddDebug(LogLevel.Information);
}
else
{
loggerFactory.AddDebug(LogLevel.Error);
}
app.UseStaticFiles();
app.UseIdentity();
app.UseMvc(config =>
{
config.MapRoute(
name: "Default",
template: "{controller}/{action}/{id?}",
defaults: new { controller = "Home", action = "Index" }
);
});
seeder.EnsureSeedData().Wait();
}
}
}
这里是angular的代码
应用程序.js
// app.js
(function () {
"use strict";
angular.module("app",[]);
})();
机器 Controller .js
// machineController.js
(function () {
"use strict";
angular.module("app")
.controller("machineController", machineController);
function machineController($http) {
/* jshint validthis:true */
var vm = this;
vm.machines = [];
vm.errorMessage = "";
$http.get("/machines")
.then(function (response) {
// Success
angular.copy(response.data, vm.machines);
}, function (error) {
// Failure
vm.errorMessage = "Failed: " + error;
});
}
})();
索引.cshtml
@model IEnumerable<RnD.Models.Entity.MachineType>
@{
ViewBag.Title = "Machine Type List";
}
@section scripts{
<script src="~/lib/angular/angular.js"></script>
<script src="~/js/app.js"></script>
<script src="~/js/machineController.js"></script>
}
<div class="row" ng-app="app">
<div ng-controller="machineController as vm" class="col-md-6 col-md-offset-6">
<table class="table table-responsive">
<tr ng-repeat="machine in vm.machines">
<td>{{machine.name}}</td>
</tr>
</table>
</div>
</div>
最佳答案
我找到了问题所在。
在 Controller 中我添加了一个方法
[HttpGet("GetMachines")]
public IActionResult GetMachines()
{
try
{
var results = _repository.GetAllMachineTypes();
return Ok(Mapper.Map<IEnumerable<MachineTypeViewModel>>(results));
}
catch (Exception ex)
{
_logger.LogError($"Failed to get all Machine types: {ex}");
return BadRequest("Error Occurred");
}
}
其次我更改了 machineController.js
(function () {
"use strict";
angular.module("app")
.controller("machineController", machineController);
function machineController($http) {
/* jshint validthis:true */
var vm = this;
vm.machines = [];
vm.errorMessage = "";
$http.get("/machines/GetMachines")
.then(function (response) {
// Success
angular.copy(response.data, vm.machines);
}, function (error) {
// Failure
vm.errorMessage = "Failed: " + error;
});
}
})();
关于c# - .net 核心 IActionResult 返回 OK(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44949170/
在 Controller 中在 .NET Core 中你可以返回 Ok()作为IActionResult .但我不明白它怎么还可以返回一个Task . 例子: public class Foo
Razor Pages 在 Asp.Net Core 2.0 中引入,作为创建以页面为中心的 Web 应用程序的一种方式,并且在许多方面比典型的 Controller 、 View 、模型方法更容易编
我们将在 dotnet core 2.1 中创建一个新的 API,这个 Web API 将是一个高流量/交易,比如每分钟 10,000 或更高。我通常像下面这样创建我的 API。 [HttpGet("
虽然我确实理解 Task、ActionResult 等概念。但我仍然不确定如果没有指定其他内容,在 Controller 中输入哪个最直观。 考虑到返回类型的明确性,我应该这样做: [HttpGet]
我正在开发 .Net Core Web API 应用程序。我的 Controller 上有以下方法: [HttpGet] public async Task GetArtists() { var
我刚刚下载了基于 ASP.NET 5 的 music store (microsoft sample projct) 源代码。我不明白为什么 Microsoft 的开发人员在 Controller 中
我想设置一个全局设置,以便在从任何 HTTP 函数返回的任何响应中不返回 null 属性。 示例: public class User { public int Id { get; set;
我正在使用 .NET Core 2 创建一个 API,为使用不同技术开发的许多应用程序提供数据。我目前正在从我的方法返回 IActionresult。我一直在研究返回数据的最佳选择是什么,并看到了一些
我正在将以下请求发布到 http://somesite.ngrok.io/nexmo?to=61295543680&from=68889004478&conversation_uuid=CON-btt
我正在使用 barcodelib 库 + .Net Core 中可用的 System.Drawing.Common 包生成条码图像。 我想在浏览器中将图像作为纯图像(或作为下载)返回给用户,但我似乎找
我正在尝试测试返回 IActionResult 的 API Controller 的结果。目前它正在返回一个包含状态代码、值等的对象。我正在尝试仅访问该值。 List newBatch2 = new
我正在尝试使用 IActionResult 接口(interface)来抛出特定的异常。但是此刻我被困在 Controller 上了。我编写了以下代码来获得单个调用: [Route("sing
我正在使用 C# 和 .NET Core 2.0 开发 ASP.NET Core 2 Web API。 我已经更改了一种方法,将其添加到 try-catch 中以允许我返回状态代码。 public I
我有 Controller 和一些端点 Task MyCustomEndpoint这是返回 return Ok(CustomDataType) .返回的数据是来自 JSON 的格式。 现在我想从其他
我有一个端点,它调用另一个返回 json 对象 (IActionResult) 的函数。如何访问 json 数据? public async Task GetData( [Ht
我已经创建了 Web API,但我的问题是从它读取结果给客户端。 创建用户的WebApi方法: [HttpPost] public IActionResult PostNewUser([FromBod
我已经开始研究 Typewriter,看看它是否符合我生成模型和 API 层的要求。 到目前为止,它正在生成模型,我让它生成某种 API 层,但是在使用 $ReturnType 时我遇到了问题,如示例
什么是 IActionResult?我尝试查看 MSDN 和其他站点,但需要一般的、常见的、易于理解的答案。 MSDN IActionResult 示例: public IActionResult A
我有一个 API Controller 端点,例如: public IHttpActionResult AddItem([FromUri] string name) { try {
我有一个只有一个 Action 的 Controller 。在这个 Action 方法中,我有一个 async我调用的方法就是这样。这是我正在使用的代码: [HttpGet] public Task
我是一名优秀的程序员,十分优秀!