ASP.NET/ASP.NET Core

[ASP.Net Core] Controller 와 View 상에서 상호 Form 변수 넘기기 (값넘기기) - GET, POST 방식의 고찰

http://portfolio.wonpaper.net 2023. 2. 10. 21:26

백엔드 웹개발할때 DB 작업 만큼이나 많이 하는 작업이 Form 변수 처리하고 다음 페이지 등으로 값넘기기

이때 보통의 경우 웹주소값형태로 연이어 GET 방식으로 Form값을 넘길 수도 있고,

그보다 다량의 보이지 않는 데이터 형식으로 POST 방식으로 처리한다.

 

 

1. 다음페이지(다음 액션메소드)로 이동하면서 GET이나 POST Form 변수값을 넘기고자 한다.

(1) Action 메소드의 파라미터(인수) 명으로 넘기기

(2) ViewBag, ViewData 형태의 내부적으로 조용히 넘기기 ( Controller 에서 해당 View 액션메소드로 넘기기 )

(3) 넘기고자 하는 자료들을 한꺼번에 클래스로 만들어 그 객체를 Action 메소드의 파라미터로 넘기기 ( DataBinding )

 

위의 3가지 방법으로 ASP.NET Core 에서는 일반적으로 자료를 다음페이지로 넘길수 있다.

이제부터는 아래 일부 소스내용을 보고 확인하면 되겠다.

 

2. Get 방식으로 값넘기기, 같은 이름값으로 동일하게 넘기면 배열로 넘어간다.

 

[ HomeController.cs ]

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class HomeController : Controller
{
    [HttpGet]
    public IActionResult Index()
    {
 
        string discount_rate = Request.Query["discount_rate"];
        if (discount_rate == null)
        {
            discount_rate = "0";
 
        }
 
        string[] discount_rateArr = Request.Query["discount_rate"];
 
        ViewBag.discount_rate = discount_rate;
        ViewBag.discount_rateArr = discount_rateArr;
        
        return View();
 
    }
}
cs

 

[ Views/Home/Index.cshtml ]

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@{
    ViewData["Title"] = "Home Page";
 
    string discount_rate = ViewBag.discount_rate;
    string[] rateArr = ViewBag.discount_rateArr;
    int i = 1;
}
 
<div>discount_rate = @discount_rate</div>
 
@foreach (var arr in rateArr)
{
    <div>[@i] : @arr</div>
    i++;
}
cs

 

 

dicsount_rate 값을 동일한 변수이름으로 여러개 Get으로 넘기고 있다.

string 하나로 바로 받으면 2,2,514 형태로 한줄 문자열로 나오고

string[] 배열값으로 받으면 Array 형태로 자동 담아준다.