문제

이것은 IIS 6 세계에서 ASP.NET 2.0을 사용합니다.

사용자가 데이터를 게시하여 포스트를 보내는 양식을 제출하는 사용자가 있습니다. 데이터를 수신하는 페이지는 몇 가지 간단한 검증을 수행합니다. 유효성 검사가 전달되면 기본적으로 request.form ( "nameHere")을 사용하여 데이터를 읽는 블랙 박스 코드 루틴이 실행됩니다.

게시물 항목의 값을 변경 한 다음 게시물에 다시 넣고 싶습니다. request.form ( "namehere")을 읽는 코드를 수정할 수있는 기능이 없으므로 아이디어 주변의 작업은 페이지의로드 이벤트 중에 데이터를 수정하는 것입니다. 게시물 항목의 값을 변경하면 블랙 박스 코드를 수정할 필요가 없습니다.

HTTP 게시물의 항목 값을 변경할 수 있습니까?

누구든지 이것을 한 사람이 있습니까?

감사!

도움이 되었습니까?

해결책

약간 해킹 되더라도 게시물 변수의 값을 변경하는 방법이 있습니다.

우리는 반사를 사용하여 표시 할 수 있습니다 Request.Form 컬렉션은 읽지 않고 값을 우리가 원하는 것으로 바꾸고 다시 읽기 위해 다시 표시하십시오 (다른 사람들이 가치를 변경할 수 없도록). 다음 기능을 사용하십시오.

protected void SetFormValue(string key, string value)
{
  var collection = HttpContext.Current.Request.Form;

  // Get the "IsReadOnly" protected instance property.
  var propInfo = collection.GetType().GetProperty("IsReadOnly", BindingFlags.Instance | BindingFlags.NonPublic);

  // Mark the collection as NOT "IsReadOnly"
  propInfo.SetValue(collection, false, new object[] { });

  // Change the value of the key.
  collection[key] = value;

  // Mark the collection back as "IsReadOnly"     
  propInfo.SetValue(collection, true, new object[] { });
}

내 컴퓨터에서 코드를 테스트했으며 잘 작동합니다. 그러나 성능이나 휴대 성 보장을 제공 할 수 없습니다.

다른 팁

현재 게시물을 변경할 수는 없지만 새 게시물 요청을 작성하고 리디렉션 할 수 있습니다.

나는 원래의 사후 결정을 자신의 것들로 변경 한 다음 코드에서 주소로 이동하는 모든 요청이 블랙 박스 주소로 발송됩니다.

그래도 이것을 통해 약간의 오버 헤드가 있습니다.

내가 기억하는 한, 양식 수집은 수정할 수 없습니까? 정확한 구조를 기억하지 못하지만 나는 그렇게 생각합니다

Request.Form("NameHere") = "newValue"

작동하지 않을 것입니다.

문안 인사

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top