인프런 커뮤니티 질문&답변

로엔님의 프로필 이미지
로엔

작성한 질문수

ASP.NET Core MVC +ASP.NET Core +REST API +.NET 8.0

3)Controller:query string을 통해 데이터 조회

Request.Query는 배열로는 받을 수 없나요?

작성

·

185

0

queryString으로 데이터를 받아오는 것에서 매개변수에 string[] datas를 해주면, datas Name을 가진 input 태그에서는 받는 값들은 이 배열에 모인다는 걸 이해 했습니다.

 

근데 Request.Query로는 그게 불가능한가요?

답변 2

0

개발자Park님의 프로필 이미지
개발자Park
지식공유자

안녕하세요.개발자park입니다.

[Q1.붙여주신 링크가 안열리네요 ㅠㅠ]

[A]

링크가 아닙니다.

아래 요청으로 테스트해보라는 의미였습니다.
/test?testdata=abcdef&testdata=abc

 

[Q2string[]? datas = Request.Query["datas"];]

[A]

이는 Get방식으로 요청시 얻을 때 사용되며

질문하신[HttpPost]처럼 post방식에서 얻을 경우

Request.Form["datas"];

으로 얻어주시면 됩니다.

감사합니다.

로엔님의 프로필 이미지
로엔
질문자

오 get 요청으로 바꿔주니까 잘 들어오네요!!

답변 감사합니다!! Post 방식에서 얻는 경우까지 잘 배웁니다!

0

개발자Park님의 프로필 이미지
개발자Park
지식공유자

안녕하세요.개발자park입니다.

아래코드의 string[]? testdata처럼 배열로 선언해주시면 가능합니다.

코드(MVC아님):

app.Run(async (context) =>

{

string[]? testdata = context.Request.Query["testdata"];

await context.Response.WriteAsync($"{testdata[0]} {testdata[1]}");

});

위에서는 간단하게 제가 {testdata[0]} {testdata[1]}이렇게 적었지만

배열의 길이를 얻어서 for문을 돌려주시면 되겠습니다.

 

요청형태:

https://localhost:7102/test?testdata=abcdef&testdata=abc

감사합니다.

로엔님의 프로필 이미지
로엔
질문자

붙여주신 링크가 안열리네요 ㅠㅠ

음... 그리고 제가 어제 간단하게 실험(?)을 해봤는데요.

Index.html


@{
    ViewData["Title"] = "View";
}

<h1>View</h1>

<form action="/home/onPost" method="post">
    <input type="text" name="datas" />
    <input type="text" name="datas" />
    <input type="text" name="datas" />
    <input type="submit" name="Submit" />
</form>

HomeController.cs

using Microsoft.AspNetCore.Mvc;

namespace HelloASP.Controllers
{
    public class HomeController : Controller
    {

        [HttpPost]
        public string OnPost()
        {
            string[]? datas = Request.Query["datas"];
            Console.WriteLine(datas);
            string results = "";

            if (datas != null)
            {
                foreach (string data in datas)
                {
                    results += data;
                }
            }

            return results;
        }

        public IActionResult Index()
        {
            return View();
        }
    }
}

이렇게 하고 중단점을 찍어봤는데요.
아무 텍스트를 입력하고 제출버튼을 눌렀을 때 datas에 아무것도 안들어오더라구요..
혹시 제가 뭘 잘못한게 있을까요?

로엔님의 프로필 이미지
로엔

작성한 질문수

질문하기