BusinessController.cs 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. using Microsoft.AspNetCore.Mvc;
  2. using System.ComponentModel.DataAnnotations;
  3. using economy.Models;
  4. using economy.Models.Business.Number;
  5. namespace economy.Controllers
  6. {
  7. public class BusinessController : Controller
  8. {
  9. [ViewData]
  10. [BindProperty(Name = "query", SupportsGet = true)]
  11. [Required(ErrorMessage = "검색어를 입력해주세요.")]
  12. [StringLength(255, ErrorMessage = "검색어 길이를 초과하였습니다.")]
  13. public required string Query { get; set; }
  14. private readonly NTS_API _NTS_API;
  15. private Dictionary<string, string> _queryString;
  16. public BusinessController(NTS_API NTS_API)
  17. {
  18. _NTS_API = NTS_API;
  19. }
  20. [HttpGet]
  21. public IActionResult Number()
  22. {
  23. ViewBag.isError = false;
  24. return View();
  25. }
  26. [HttpPost]
  27. public async Task<IActionResult> Search()
  28. {
  29. try
  30. {
  31. // 유효성 검사
  32. if (!ModelState.IsValid)
  33. {
  34. throw new Exception(
  35. string.Join("\n", ModelState.Values.SelectMany(v => v.Errors).Select(e => e.ErrorMessage))
  36. );
  37. }
  38. if (string.IsNullOrWhiteSpace(Query))
  39. {
  40. throw new Exception("검색어를 입력해주세요.");
  41. }
  42. BusinessModel business = new BusinessModel(_NTS_API);
  43. ViewBag.result = await business.GetNumberInfo(Query);
  44. ViewBag.isError = false;
  45. }
  46. catch (Exception ex)
  47. {
  48. ViewBag.isError = true;
  49. ViewBag.errorMessage = ex.Message;
  50. }
  51. ViewBag.Query = Query;
  52. return View("Number");
  53. }
  54. }
  55. }