Ich arbeite an einer ASP.Net Core 1.1-Web-API. Ich habe einen ServiceTypeCode-Controller wie unten gezeigt;Warum funktioniert FromQuery nicht in meiner ASP.Net Core 1.1-Controller-Aktion?
[Produces("application/json")]
[Route("api/[controller]")]
public class ServiceTypeCodeController : Controller
{
...
...
...
[HttpGet]
public IActionResult Get([FromQuery] string a_query)
{
try
{
if (string.IsNullOrEmpty(a_query))
{
OperationResult<List<ServiceTypeCode>, string> result = m_bl.GetAllServiceTypeCodes();
if (result.Success && result.Result.Count > 0)
{
return Ok(JsonConvert.SerializeObject(result.Result));
}
} else
{
// Deserialize query into dictionary of strings and StringValues
var query = QueryHelpers.ParseQuery(a_query.ToLower());
if (query.TryGetValue("mailclasscode", out var mailClassCode))
{
if (!string.IsNullOrEmpty(mailClassCode))
{
OperationResult<List<ServiceTypeCode>, string> result = m_bl.GetAllServiceTypeCodes(mailClassCode);
if (result.Success && result.Result.Count > 0)
{
return Ok(JsonConvert.SerializeObject(result.Result));
}
}
}
if (query.TryGetValue("stc", out var stc))
{
if (!string.IsNullOrEmpty(stc))
{
OperationResult<ServiceTypeCode, string> result = m_bl.GetServiceTypeCode(stc);
if (result.Success)
{
return Ok(JsonConvert.SerializeObject(result.Result));
}
}
}
}
return NotFound();
}
catch (Exception ex)
{
string msg = "An exception occurred while trying to get a list of ServiceTypeCodes from the database.";
m_logger.LogError(1, ex, msg);
ApiError error = BuildError("Server Error - Exception", "500", "Get", ex, msg);
return Ok(JsonConvert.SerializeObject(error));
}
}
Wenn ich die URL verwenden ...
http://localhost:5000/api/servicetypecodes
in PostMan mit dem Verb GET, erhalte ich die Liste der Typencodes Service, wie erwartet. Wenn ich jedoch versuchen, etwas als Query-String hinzuzufügen, wie ...
http://localhost:5000/api/servicetypecodes?mailclasscode=fc
und einen Haltepunkt in meinem Code festgelegt am
if (string.IsNullOrEmpty(a_query))
Lage, ist der Wert von a_query null statt des erwarteten "mailclasscode = fc"
Was fehlt mir hier?
Vielen Dank im Voraus für jede Hilfe.
Der Name des String-Variable wird erwartet, muss sein das selbe wie das, das du sendest: a_query -> mailclasscode – Terrance00
Terrance - OK, also wenn ich möchte, dass der Benutzer http: // localhost: 5000/api/servicetypecodes? mailclasscode = fc oder http: // localhost verwendet: 5000/api/servicetypecodes? Stc = 123, je nachdem, ob sie nach mailclasscode oder stc filtern, dann müsste ich public IActionResult Get ([FromQuery] string) haben mailclasscode, [FromQuery string stc] ist das richtig? – EiEiGuy
Das hat funktioniert. Danke Terrance. Wenn Sie eine Antwort posten möchten, würde ich mich freuen, sie als korrekt zu markieren, damit Sie eine Anerkennung erhalten. – EiEiGuy