我试图在我的一个控制器中单独测试一个方法,返回一个JsonResult.令我惊讶的是,以下代码不起作用:
[HttpPost]
public JsonResult Test() {
return Json(new {Id = 123});
}
Run Code Online (Sandbox Code Playgroud)
这是我测试它的方式(还要注意测试代码驻留在另一个程序集中):
// Act
dynamic jsonResult = testController.Test().Data;
// Assert
Assert.AreEqual(123, jsonResult.Id);
Run Code Online (Sandbox Code Playgroud)
将Assert抛出一个异常:
'object'不包含'Id'的定义
我已经通过使用以下方法解决了它:
[HttpPost]
public JsonResult Test() {
dynamic data = new ExpandoObject();
data.Id = 123;
return Json(data);
}
Run Code Online (Sandbox Code Playgroud)
我试图理解为什么不是第一个工作?它似乎也基本上适用于任何匿名类型.
我收到错误"无法隐式转换类型'int?' 到'int'.在返回行的OrdersPerHour上存在显式转换(你是否错过了演员?)我不确定为什么,因为我的C#技能不是那么先进.任何帮助,将不胜感激.
static int OrdersPerHour(string User)
{
int? OrdersPerHour;
OleDbConnection conn = new OleDbConnection(strAccessConn);
DateTime curTime = DateTime.Now;
try
{
string query = "SELECT COUNT(ControlNumber) FROM Log WHERE DateChanged > #" + curTime.AddHours(-1) + "# AND User = '" + User + "' AND Log.EndStatus in ('Needs Review', 'Check Search', 'Vision Delivery', 'CA Review', '1TSI To Be Delivered');";
OleDbCommand dbcommand = new OleDbCommand(query, conn);
dbcommand.Connection.Open();
dbcommand.CommandType = CommandType.Text;
OrdersPerHour = (int?)dbcommand.ExecuteScalar();
Console.WriteLine("Orders per hour for " + User + " …Run Code Online (Sandbox Code Playgroud) 所以我有一种情况,我必须加入(并映射)超过7个实体(据我所知,这是Dapper的当前限制).这是我到目前为止(伪代码):
using (var connection = new SqlConnection(_connectionString)) {
IEnumerable<BigEntity> results =
connection.Query<BigEntity, Lookup1, Lookup2, ... around 10 of them>(sql,
(b, l1, l2, l3) => {
// map and return here
},
splitOn: "split1, split2 ...");
}
Run Code Online (Sandbox Code Playgroud)
这种限制有什么办法吗?以前有人面对这个吗?也许一些Dapper扩展?
所以基本上我遇到了我已经给出的任务的问题.我不会厌倦任务本身的细节,所以我只会给你相关的信息.
我有一本字典,我需要按最高的int [value]排序,准确地排在前五位,我需要能够显示底部的五位.
Dictionary<string, int> dict = new Dictionary<string, int>();
Run Code Online (Sandbox Code Playgroud)
字符串(键)包含已为文本文件读取的单词.整数(值)包含文档中提到它们的次数.
我打算用另一种方式做,但我被告知要用字典做,所以请字典只帮助.我很感激,如果你能解释它应该怎么做,这样我就可以学习并完成任务,因为任务的目的是教育自己,但我发现它有点难...
我提前感谢您的帮助,如果需要更多信息,请告诉我,我会发布!
我正在尝试创建一个输入字段,该字段的值已去抖动(以避免不必要的服务器行程)。我第一次渲染我的组件时,我从服务器获取它的值(有一个加载状态等等)。
这是我所拥有的(出于示例的目的,我省略了不相关的代码)。
这是我的去抖动钩子:
export function useDebounce(value, delay) {
const [debouncedValue, setDebouncedValue] = useState(value);
useEffect(() => {
const handler = setTimeout(() => {
setDebouncedValue(value);
}, delay);
return () => clearTimeout(handler);
}, [value, delay]);
return debouncedValue;
}
Run Code Online (Sandbox Code Playgroud)
(我从:https : //usehooks.com/useDebounce/得到这个)
是的,这是我的组件以及我如何使用useDebounce钩子:
function ExampleTitleInput(props) {
const [title, setTitle] = useState(props.title || "");
const [lastCommittedTitle, setLastCommittedTitle] = useState(title);
const [commitsCount, setCommitsCount] = useState(0);
const debouncedTitle = useDebounce(title, 1000);
useEffect(() => {
setTitle(props.title || "");
}, [props.title]);
useEffect(() => {
if …Run Code Online (Sandbox Code Playgroud) 我有一个ASP.NET 3.1的核心应用程序,我需要访问IWebHostEnvironment的Program.cs虚拟主机制造商。这就是我现在所拥有的(Program.cs):
public class Program {
public static void Main(string[] args) {
CreateWebHostBuilder(args).Build().Run();
}
private static bool IsDevelopment =>
Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") == "Development";
public static string HostPort =>
IsDevelopment
? "5000"
: Environment.GetEnvironmentVariable("PORT");
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseUrls($"http://+:{HostPort}")
.UseSerilog((context, config) => {
config.ReadFrom.Configuration(context.Configuration);
})
.UseStartup<Startup>();
}
Run Code Online (Sandbox Code Playgroud)
IsDevelopment我不想按照我的方式进行检查,而是想使用IsDevelopment()from的方法IWebHostEnvironment,但不完全确定如何执行此操作。我现在拥有的东西有效,但老实说它“感觉不对”。
我在我的应用程序中使用Bootstrap Typeahead插件,这是我的代码(这是一个例子).我正在寻找一种方法来验证用户的选择(基本上如果输入与任何结果不匹配 - >在模糊时清空框).结果必须匹配.我到处搜索,找不到东西.非常感谢您的帮助.
$('#search').typeahead({
source: function (query, process) {
var states = [];
var map = {};
var data = [
{ "stateCode": "CA", "stateName": "California" },
{ "stateCode": "AZ", "stateName": "Arizona" },
{ "stateCode": "NY", "stateName": "New York" },
{ "stateCode": "NV", "stateName": "Nevada" },
{ "stateCode": "OH", "stateName": "Ohio" }
];
$.each(data, function (i, state) {
map[state.stateName] = state;
states.push(state.stateName);
});
process(states);
}
});
Run Code Online (Sandbox Code Playgroud) 我需要从我启用Windows身份验证web.config,而不在IIS中设置它.
我有以下元素web.config:
authentication mode="Windows
identity impersonate="true
Run Code Online (Sandbox Code Playgroud)
但是Windows身份验证不起作用.我该如何解决这个问题?
我正在努力掌握异步/等待,我想澄清一些混乱.有人可以解释以下执行方面的差异:
// version 1
public Task Copy(string source, string destination) {
return Task.Run(() => File.Copy(source, destination));
}
public async Task Test() {
await Copy("test", "test2");
// do other stuff
}
Run Code Online (Sandbox Code Playgroud)
和:
// version 2
public async Task Copy(string source, string destination) {
await Task.Run(() => File.Copy(source, destination));
}
public async Task Test() {
await Copy("test", "test2");
// ...
}
Run Code Online (Sandbox Code Playgroud)
它们是否会产生相同的代码,为什么我会在另一个上面写一个?
我已经读了Eric Lippert的博客一段时间了(它很棒,你应该看一下).在他的一篇文章的评论中,他提到他无意索引一系列数字而只是枚举它们.
枚举和索引有什么区别,我到处搜索?在我的搜索过程中,当迭代进入等式时,我变得更加困惑?有人可以解释这三个概念,甚至可以举个例子吗?在你将其标记为欺骗之前,我已经看到了关于"迭代器与普查员"的一些问题,但我还是看到了正确的解释(因此问题).我感谢您的帮助.
c# ×8
javascript ×2
asp.net-core ×1
asp.net-mvc ×1
async-await ×1
asynchronous ×1
conceptual ×1
dapper ×1
enumeration ×1
iis ×1
jquery ×1
json ×1
react-hooks ×1
reactjs ×1
sorting ×1
unit-testing ×1