![](/img/trans.png)
[英]Passing 2 values from two different dropdownlists in C# (ASP.NET Core MVC) - not sure
[英]Two identical queries returning two different values. C# .Net Core EF Core
設想
這是針對使用 DSharp 庫的不和諧機器人。 現在,在這種情況下,當我將不和諧命令作為!status testmenu
聊天時,上下文的內容將是!status testmenu
。 因此,為了將command
和prefix
與消息正文隔離開來,我創建了一個新的字符串message
,它只包含消息正文( testmenu
),如此行所示。
string message = context.Message.Content.Replace(context.Message.Content.Substring(0, (context.Command.Name.Length + 1)), string.Empty);
但是同時,參數content
也僅返回消息正文。 所以就在if
條件之前, content
和message
是相等的,也包括區分大小寫。
所以message
和content
都有一個字符串值testmenu
。
重復的原因:受控測試。
問題
當我使用第一個字符串查詢數據庫時, message
我得到一個空返回。 但是,當我使用第二個字符串content
(來自參數)查詢數據庫時,我得到了返回的適當記錄。 但是請再次記住, message
和content
都是相同的字符串,包括區分大小寫。
我嘗試在彼此之間交換查詢語句,以確保它不是順序錯誤,但事實並非如此。 每次都是一樣的結果。 帶有參數字符串的查詢總是返回一個值,而帶有message
字符串的查詢返回空值。 是的,我確實在“if”語句之前放置了一個斷點,只是為了確保message
字符串不為空,而事實並非如此。 它與上下文具有相同的值。
[Command("status")]
public async Task Status(CommandContext context, string content)
{
string message = context.Message.Content.Replace(context.Message.Content.Substring(0, (context.Command.Name.Length + 1)), string.Empty);
Models.Menu SelectedMenu;
if (!String.IsNullOrEmpty(message))
{
//returns null
SelectedMenu = await _context.Menus.FirstOrDefaultAsync(m => m.Menu_Name.ToLower().Contains(message)).ConfigureAwait(false);
}
//returns appropriate record
var menu = await _context.Menus.FirstOrDefaultAsync(m => m.Menu_Name.ToLower().Contains(context.Message.Content)).ConfigureAwait(false);
await context.Channel.SendMessageAsync(menu.Status.ToString()).ConfigureAwait(false);
}
這是一個愚蠢的錯誤,但乍一看,並不那么明顯。
string message = context.Message.Content.Replace(context.Message.Content.Substring(0, (context.Command.Name.Length + 1)), string.Empty);
context.Message.Content
,其中“Content”的值為"!status testmenu"
context.Command.Name
的值為"status"
,我在子字符串中添加 + 1 以刪除初始的“!” 以及。 所以現在字符串有一個值" testmenu"
正如你在這里看到的,我沒有修剪這個字符串,所以開頭仍然留有空格。
對於 Visual Studio 中的人眼,當您在調試時將鼠標懸停在變量上時,它們可能看起來相同,但事實並非如此,因為開頭確實有一個空格,因此為什么我在嘗試時收到空值來查詢數據。
一旦我修剪了字符串並運行了查詢,一切都會正常工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.