1

내 개체 중 하나가 string ImportantName이며 고유해야하며 URL 라우팅에 자주 사용됩니다 (http://www.mywebsite.com/objects/{ImportantName}).Razor edit form - 값이 변경된 경우 속성 만 바인딩하는 속성 또는 다른 편리한 방법이 있습니까?

ImportantName에 대한 변경을 허용 할 수는 있지만 허용 할 경우 추가 서버 측 유효성 검사를 수행하고 이름 변경의 경우 다른 URL로 리디렉션해야합니다.

물론 jQuery를 추가하여 값의 변화를 감지하거나 서버의 이전/새 이름을 비교할 수 있지만 더 좋은 방법이 있어야합니다. 다음의

어느 날 위해 일하는 것이 :

  1. 가 만 ImportantName을 보내이
  2. 바인딩 제공 모델을 기반으로 초기 값에서 변경된 경우 ImportantName가 변경되었는지 감지하는 부울 필드 추가 그 값이있는 경우에만 서비스에 값을 보냅니다.

은 지금은 내 FormModel에 모두 OldImportantNameNewImportantName를 추가하고 포스트 후 서버에 비교하여이 문제를 해결하고 있어요. 이

  • 바인딩 제공 모델을 기반으로 초기 값에서 변경된 경우

  • 답변

    0
    • 만 ImportantName가 변경되었는지 감지하는 부울 필드를 추가하고있는 경우에만 서비스에 가치를 보내 ImportantName을 보내 . 당신이 위에서 언급 한 옵션 중 하나를 구현하려면

    만 jQuery를 사용하여 클라이언트 측에서이를 수행 할 수 있습니다. 나는 FORM이 이미 클라이언트 브라우저에서 렌더링되었고 POST 작업의 모든 속성을 포함/제외하는 것은 클라이언트 측에서 DOM을 변경하여 관리해야하기 때문에 (AJAX를 사용하고 싶지 않지만 AJAX를 사용하기로 결정하면 JQuery를 사용하여 클라이언트 측에서 관심있는 POST 속성 만 사용할 수있다). 실제로 모델 속성에 대한 변경 사항을 관찰하는 것은 JQuery를 사용하여 클라이언트 측에서 수행해야합니다.

    이 경우에는이 요구 사항을 해결하는 것이 좋습니다. 현재 요구 사항을 정확히 어떻게 해결하고 있는지, 조금만 변경하면됩니다. 저는 OLD/NEW 값을 formModel에 포함시키지 않습니다. 대신 하나의 OLD 속성 만 갖게 될 것이고 JQuery OnChange를 사용하여 변경 사항을 식별 할 것입니다. 그런 다음 필요한 조치를 취하십시오. 당신이 JQuery에 가고 싶지 않으면 FORM POST에서 서버 측 ActionFilter를 사용하여 모델의 변경 사항을 점검 할 수 있습니다 (모델 변경 확인을위한 코드 작성, AFAIK HTTP 세계에서 기본 메커니즘 없음). 속성 변경을 식별하고 필요한 서버 리디렉션을 수행합니다.

    또는 KnockoutJS 또는 과 같은 JavaScript 프레임 워크를 사용할 수 있으며 매우 적은 노력으로 클라이언트 측에서 속성 변경을 감지하는 데 사용할 수있는 Observable 배열 또는 컬렉션이 있습니다. 그리고 필요한 프레임 워크를 통해 필요한 액션과 POST 만 필요하고 관심있는 매개 변수 만 가져옵니다.

    관련 문제