ASP.NET 코어에서 asp-*
속성 (예 : asp-for
)의 값은 모델 이전의 요청 페이로드에서 가져온 것으로 보입니다. 예 :ASP.NET 코어 : asp- * 특성은 모델에 대한 요청 페이로드를 사용합니까?
후이 값이 조치를
MyProperty="User entered value."
:
<input asp-for="MyProperty" />
:
[HttpPost]
public IActionResult Foo(MyModel m)
{
m.MyProperty = "Change it to this!";
return View();
}
또는이 작업
[HttpPost]
public IActionResult Foo(MyModel m)
{
m.MyProperty = "Change it to this!";
return View(m);
}
보기이 렌더링
양식 입력의 값은 User entered value.
이고 Change it to this!
이 아닙니다.
우선, 우리는 모델을보기에 전달할 필요가없고 놀랍습니다. 둘째, 요청 페이로드가 뷰에 전달 된 모델보다 우선한다는 점에 저는 놀랍습니다. 누구나이 디자인 결정의 근거가 무엇인지 알 수 있습니까? asp-for
속성을 사용할 때 사용자가 입력 한 값을 덮어 쓰는 방법이 있습니까?
나는에 모델을 통과 할 때조차이 문제를보고 있어요 보기. 질문의 두 번째 예를 참조하십시오. 'ModelState.Clear()'는 이것을 피하는 지저분한 방법처럼 보입니다. 나는 MVC 5가 그런 것을 요구한다고 생각하지 않는다. –
아니, 그렇게하는 방법입니다. MVC5에서도 마찬가지입니다. 공식 회원 (Eilon)이이 https://github.com/aspnet/Mvc/issues/4486#issuecomment-210603605를 확인한 링크를 참조하십시오. – Shyju