ASP.Net Core 1.1 Web APIを使用しています。私は以下のようにServiceTypeCodeコントローラを持っています。郵便配達中ASP.Net Core 1.1コントローラアクションでFromQueryが動作しないのはなぜですか?
[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));
}
}
私は、URLを使用する場合...
http://localhost:5000/api/servicetypecodes
GET動詞と予想通り、私は、サービスタイプコードのリストを取得します。私は、このような
http://localhost:5000/api/servicetypecodes?mailclasscode=fc
...として、クエリ文字列として何も追加して
if (string.IsNullOrEmpty(a_query))
場所で自分のコードにブレークポイントを設定しようとした場合しかし、a_queryの値が代わりにnullであります予想される "mailclasscode = fc"の
私はここで何が欠けていますか?
ご協力いただきありがとうございます。
それは期待している文字列変数の名前でなければなりませんあなたは.NetCoreは(あなたの変数名を使用して)そのようなコードで定義することによってどのように知っているように持っていますa_query - > mailclasscode – Terrance00
Terrance - ユーザーがhttp:// localhost:5000/api/servicetypecodes?mailclasscode = fcまたはhttp:// localhost:を使用させたい場合は、 5000/api/servicetypecodes?stc = 123、mailclasscodeまたはstcでフィルタリングしているかどうかによって、必要があります public IActionResult Get([FromQuery] string mailclasscode、[FromQuery string stc] は正しいですか? – EiEiGuy
それはうまくいった。ありがとうTerrance。あなたが回答を投稿したいのであれば、私はあなたが信用を得るように、それを正しいものとしてマークするのが喜ばしいでしょう。 – EiEiGuy