programing

asp.net mvc 2에서 TryUpdateModel을 사용하는 시기와 이유는 무엇입니까?

powerit 2023. 8. 6. 10:27
반응형

asp.net mvc 2에서 TryUpdateModel을 사용하는 시기와 이유는 무엇입니까?

TryUpdateModel이 어떻게 작동하는지 확인할 수 있는 기본 코드 샘플을 찾을 수 없는 것 같습니다.언제 사용하고 그 이유는 무엇입니까?

이 방법을 사용하여 지정된 컨트롤러를 통해 특정 뷰를 지원하는 모델을 업데이트할 수 있습니다.예를 들어 속성 Bar가 텍스트 상자로 채워진 Foo 개체를 표시하는 보기가 있는 경우 컨트롤러에서 메서드 Save()를 호출하고 TryUpdateModel을 호출하여 Foo 업데이트를 시도할 수 있습니다.

public class Foo {
  public string Bar { get; set; }
}

// ... in the controller
public ActionResult Save() {
  var myFoo = new Foo();
  TryUpdateModel(myFoo);
}

지정된 막대 값으로 모형을 업데이트하려고 합니다.업데이트가 유효성 검사에 실패하면(예: Bar가 정수이고 텍스트 상자에 "hello"라는 텍스트가 들어 있는 경우) TryUpdateModel은 ViewData ModelState 업데이트를 유효성 검사 오류와 함께 전달하고 보기에 유효성 검사 오류를 표시합니다.

에 대한 보안 경고를 주의 깊게 살펴야 합니다.MSDN 문서의 NET Framework 4:

보안 참고 [Overload:시스템.웹.MVC.컨트롤러.포함할 속성 목록(화이트리스트) 또는 제외할 속성 목록(블랙리스트)을 사용하는 TryUpdateModel '1] 메서드입니다.명시적인 화이트리스트 또는 블랙리스트가 통과되지 않은 경우 [오버로드:시스템.웹.MVC.컨트롤러.TryUpdateModel`1] 메서드는 요청에 해당하는 값이 있는 모델의 모든 공용 속성을 업데이트하려고 합니다.악의적인 사용자는 이 취약성을 이용하여 사용자가 액세스를 제공하지 않는 속성을 업데이트할 수 있습니다.

https://msdn.microsoft.com/en-us/library/system.web.mvc.controller.tryupdatemodel(v=vs.100).aspx

TryUpdateModel()에서는 매개 변수를 작업 내부의 모델에 바인딩할 수 있습니다.이 기능은 데이터베이스에서 모델을 로드한 후 사용자 입력에서 전체 모델을 가져오는 대신 사용자 입력을 기준으로 모델을 업데이트하려는 경우에 유용합니다.

public ActionResult Update(int id) {
    var service = new ServiceClass();
    var record = service.LoadModel(id);
    if (!TryUpdateModel(record)) {
        // There was an error binding data
        return View();
    }
    // Everything was ok, now save the record back to the database
    service.SaveModel(record);
    return View("Success");
}

와 유사한 작용을 합니다.UpdateModel()성공하면 true를 반환하고 오류가 있으면 false를 반환합니다.UpdateModel()에서는 코드가 조금 더 필요한 오류가 있는 경우 예외를 슬로우합니다.

참고: 업데이트할 속성을 제한할 수 있는 오버로드 중 하나를 사용할 수 있습니다.

우리는 또한 사용했습니다.TryUpdateModel Action을 했습니다.HttpFormCollection우리의 매개 변수로서 그리고 호출됩니다.TryUpdateModelclean boolean 은 이로부터 을 통해 제어 또는 할 수 이로부터 반환된 깨끗한 부울 값을 사용하여 제어 흐름을 액션의 성공 또는 실패 메서드로 전달할 수 있습니다.

public ActionResult Save(HttpFormCollection formCollection)
{
  var saveModel = new SaveModel(); // or from a Factory etc
  var validModel = TryUpdateModel(_saveModel, formCollection); // order may be incorrect
  return validModel ? Save(saveModel) : InvalidSaveModel(saveModel);
}

우리는 그것을 구축하는 것이 꽤 쉽다는 것을 알았습니다.HttpFormCollection모든 유효성 검사 사례에 대해 테스트합니다. 따라서 조치를 테스트합니다.

언급URL : https://stackoverflow.com/questions/5268421/when-and-why-do-you-use-tryupdatemodel-in-asp-net-mvc-2

반응형