Mvc: μƒˆ MVC의 였래된 버그 - POST AJAXμ—μ„œ 였래된 데이터 ν‘œμ‹œ

에 λ§Œλ“  2016λ…„ 04μ›” 15일  Β·  4μ½”λ©˜νŠΈ  Β·  좜처: aspnet/Mvc

μ•ˆλ…•ν•˜μ„Έμš”,
PartialView의 데이터 μ—…λ°μ΄νŠΈλ₯Ό μœ„ν•΄ λ‚΄ λ³΄κΈ°μ—μ„œ 컨트둀러둜의 ajax 호좜이 μžˆμŠ΅λ‹ˆλ‹€.
Ajax ν˜ΈμΆœμ€ 이 κ²Œμ‹œλ¬Ό μž‘μ—…μ— λŒ€ν•΄ μΊμ‹œλ₯Ό λΉ„ν™œμ„±ν™”ν–ˆμŠ΅λ‹ˆλ‹€.
μ»¨νŠΈλ‘€λŸ¬μ—μ„œ λͺ¨λΈμ΄ μ˜¬λ°”λ₯΄κ²Œ λ³€κ²½λ˜μ—ˆμ§€λ§Œ(디버그 λͺ¨λ“œμ—μ„œ λ³Ό 수 있음) PartialViewλŠ” ajaxκ°€ 이전 데이터λ₯Ό λ°˜ν™˜ν•œ 후에도 μ—¬μ „νžˆ ν‘œμ‹œλ©λ‹ˆλ‹€.

StackOverflowμ—μ„œ 여기와 λ˜‘κ°™μ€ μ‹œλ‚˜λ¦¬μ˜€μž…λ‹ˆλ‹€.
http://stackoverflow.com/questions/1775170/asp-net-mvc-modelstate-clear

이전 MVC 버전과 같이 μ»¨νŠΈλ‘€λŸ¬μ—μ„œ ModelState.Clear() λͺ…령을 μ‚¬μš©ν•˜μ—¬ 이 문제λ₯Ό ν•΄κ²°ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
근데 이걸 μ™œ μ΄λ ‡κ²Œ λ†€λžκ²Œλ„ ν•˜λŠ”μ§€ 이해가 μ•ˆλ¨...

κ°μ‚¬ν•©λ‹ˆλ‹€

λ―Έλ‘œμŠ¬λΌν”„

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

이것은 버그가 μ•„λ‹ˆλΌ κΈ°λŠ₯의 λΆ€μž‘μš©μž…λ‹ˆλ‹€. ModelState λŠ” μš”μ²­μ—μ„œ 얻은 값을 μ €μž₯ν•˜λ―€λ‘œ μœ νš¨μ„± 검사 였λ₯˜μ˜ 경우 μ‚¬μš©μžκ°€ μž…λ ₯ν•œ μ •ν™•ν•œ 값을 ν‘œμ‹œν•  수 μžˆμŠ΅λ‹ˆλ‹€.

public class EditModel
{
    public int Count { get; set; }
}
<input type='text' asp-for='Count' />

μ‚¬μš©μžλŠ” ν…μŠ€νŠΈ μƒμžμ— 'foo' λ₯Ό μž…λ ₯ν•˜κ³  양식을 κ²Œμ‹œν•˜μ§€λ§Œ mvcλŠ” 'foo' λ₯Ό int 맀핑할 수 μ—†μœΌλ―€λ‘œ ModelState μ—†μ΄λŠ” λ‹€μ‹œ μž…λ ₯을 ν‘œμ‹œν•©λ‹ˆλ‹€. 0 λŒ€μ‹  'foo' 으둜 μ‚¬μš©μžμ—κ²Œ μ œκ³΅ν•©λ‹ˆλ‹€.

일반적으둜 ν¬μŠ€νŠΈλ°±μ—μ„œ 슀슀둜 λͺ¨λΈμ„ λ³€κ²½ν•΄μ„œλŠ” μ•ˆ 되며, μ ˆλŒ€μ μœΌλ‘œ λ³€κ²½ν•΄μ•Ό ν•˜λŠ” 경우 그에 따라 ModelState 도 μ—…λ°μ΄νŠΈν•΄μ•Ό ν•©λ‹ˆλ‹€. ν¬μŠ€νŠΈλ°±μ—μ„œ View λ₯Ό λ°˜ν™˜ν•˜λŠ” 것은 μœ νš¨μ„± 검사 였λ₯˜λ₯Ό μœ„ν•΄ μ˜ˆμ•½ν•΄μ•Ό ν•©λ‹ˆλ‹€. 그렇지 μ•ŠμœΌλ©΄ μ‚¬μš©μžκ°€ 창을 μƒˆλ‘œ 고치고 λ‹€μ‹œ ν¬μŠ€νŠΈλ°±μ„ μˆ˜ν–‰ν•˜λŠ” 문제λ₯Ό ν•΄κ²°ν•˜λŠ” λ¦¬λ””λ ‰μ…˜μ„ μˆ˜ν–‰ν•΄μ•Ό ν•©λ‹ˆλ‹€.

λͺ¨λ“  4 λŒ“κΈ€

이것은 버그가 μ•„λ‹ˆλΌ κΈ°λŠ₯의 λΆ€μž‘μš©μž…λ‹ˆλ‹€. ModelState λŠ” μš”μ²­μ—μ„œ 얻은 값을 μ €μž₯ν•˜λ―€λ‘œ μœ νš¨μ„± 검사 였λ₯˜μ˜ 경우 μ‚¬μš©μžκ°€ μž…λ ₯ν•œ μ •ν™•ν•œ 값을 ν‘œμ‹œν•  수 μžˆμŠ΅λ‹ˆλ‹€.

public class EditModel
{
    public int Count { get; set; }
}
<input type='text' asp-for='Count' />

μ‚¬μš©μžλŠ” ν…μŠ€νŠΈ μƒμžμ— 'foo' λ₯Ό μž…λ ₯ν•˜κ³  양식을 κ²Œμ‹œν•˜μ§€λ§Œ mvcλŠ” 'foo' λ₯Ό int 맀핑할 수 μ—†μœΌλ―€λ‘œ ModelState μ—†μ΄λŠ” λ‹€μ‹œ μž…λ ₯을 ν‘œμ‹œν•©λ‹ˆλ‹€. 0 λŒ€μ‹  'foo' 으둜 μ‚¬μš©μžμ—κ²Œ μ œκ³΅ν•©λ‹ˆλ‹€.

일반적으둜 ν¬μŠ€νŠΈλ°±μ—μ„œ 슀슀둜 λͺ¨λΈμ„ λ³€κ²½ν•΄μ„œλŠ” μ•ˆ 되며, μ ˆλŒ€μ μœΌλ‘œ λ³€κ²½ν•΄μ•Ό ν•˜λŠ” 경우 그에 따라 ModelState 도 μ—…λ°μ΄νŠΈν•΄μ•Ό ν•©λ‹ˆλ‹€. ν¬μŠ€νŠΈλ°±μ—μ„œ View λ₯Ό λ°˜ν™˜ν•˜λŠ” 것은 μœ νš¨μ„± 검사 였λ₯˜λ₯Ό μœ„ν•΄ μ˜ˆμ•½ν•΄μ•Ό ν•©λ‹ˆλ‹€. 그렇지 μ•ŠμœΌλ©΄ μ‚¬μš©μžκ°€ 창을 μƒˆλ‘œ 고치고 λ‹€μ‹œ ν¬μŠ€νŠΈλ°±μ„ μˆ˜ν–‰ν•˜λŠ” 문제λ₯Ό ν•΄κ²°ν•˜λŠ” λ¦¬λ””λ ‰μ…˜μ„ μˆ˜ν–‰ν•΄μ•Ό ν•©λ‹ˆλ‹€.

μ„€λͺ…ν•΄μ£Όμ…”μ„œ λŒ€λ‹¨νžˆ κ°μ‚¬ν•©λ‹ˆλ‹€. 제 μ‹œλ‚˜λ¦¬μ˜€μ—μ„œλŠ” λͺ¨λΈ μƒνƒœ μ§€μš°κΈ°λ₯Ό μ‚¬μš©ν•˜κ² μŠ΅λ‹ˆλ‹€...
κ·Έλ ‡λ‹€λ©΄ 이 문제λ₯Ό λ‹«μ•„μ£Όμ„Έμš”..

λ„€, @Kukkimonsuta κ°€ μ΄μœ μž…λ‹ˆλ‹€.

μ‚¬λžŒλ“€μ΄ μ™œ 이걸 λͺ»μ“°λŠ”지 이해가 μ•ˆκ°€λ„€μš”. 성곡적인 POSTμ—μ„œ λ¦¬λ””λ ‰μ…˜!! 그것은 κ½€ ν‘œμ€€μ μΈ 관행이며 양식 (μΌμ’…μ˜ 'web-101')

이 SO μ§ˆλ¬Έμ€ λ§Žμ€ κ°œλ°œμžμ—κ²Œ 이 '문제'κ°€ μ–Όλ§ˆλ‚˜ μ’Œμ ˆκ°μ„ μ£ΌλŠ”μ§€ λ³΄μ—¬μ€λ‹ˆλ‹€ . POST μž‘μ—…μ—μ„œ View() λ°˜ν™˜μ„ μ€‘λ‹¨ν•˜λ©΄ λ¬Έμ œκ°€ μ‚¬λΌμ§ˆ κ²ƒμž…λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰