2014-02-14 2 views
2

내 질문 : Attribute.Add가 속성의 추가 서식을 변경하는 방법이 있습니까?Attribute.Add가 속성의 추가 형식을 변경하는 방법은 가능합니까?

div에 widget을로드하는 ASP.net 웹 사이트가 있는데, 내 코드 숨김으로 div에 데이터 옵션 속성을 추가하는 방법을 찾으려고합니다. 할당 할 값이 JSON 쌍이기 때문에 큰 따옴표 대신 데이터 옵션 값 주위에 작은 따옴표로 특성을 작성해야합니다.

내가처럼 보이도록 속성을 필요가있는 무엇 : 데이터 옵션 = '{ "post_message_origin": "https://www.mysite.com/MyWidget.aspx"}'는 Attribute.Add를 사용할 때처럼 보이는 무엇

("데이터 옵션") : 내 코드 :

string dataoptions = "{\"post_message_origin\":\""+ HttpContext.Current.Request.Url.AbsoluteUri + "\"}"; 
MYWIDGET.Attributes.Add("data-options", dataoptions); 

속성 결과 : 데이터 옵션 = "{"post_message_origin ":"https://www.mysite.com/MyWidget.aspx "}"를 포괄 따옴표의

세트 data-options 값은 JSON 쌍이 올바르게 읽히지 못하게하므로 나의 질문입니다.

코드를 변경하지 않고 개발 서버에서 프로덕션 서버로 페이지를 쉽게로드 할 수 있도록 하드 코딩을 사용하지 않도록 최선을 다하고 있습니다. 따라서 HttpContext.Current.Request.Url.AbsoluteUri를 사용하고 있습니다. ASP에서 태그에 div에 직접 데이터 옵션 값을 쓰는 대신 코드 뒤에

답변

1

이 경우 JSON에 작은 따옴표를 사용하는 것이 좋습니다. 닫힌 쌍으로되어있는 한 허용 가능합니다. 이것은 문제를 회피합니다.

편집 : 불행하게도, Attribute.Add 이것은 before을 제기하고있다

따옴표를 ... 인코딩합니다. 장기적인 해결책은 자신의 인코더 ... 난 당신의 데이터 인용의 어느 종류를 포함하여 추천 할 것입니다

+0

사실을하지만, 그것은 단지 측면 단계입니다. 이 경우에만 작동합니다. OP가 데이터를 제어하고있는 것으로 보입니다. –

+0

한번 시도해 보았습니다. 사용중인 서비스가 JSON 쌍을 큰 따옴표로 사용해야했습니다. 낄낄 거림에 대해서는 처음으로 엉망진창이 아닌지 확인하기 위해 다시 시도해 보았습니다. JSON 쌍을 작은 따옴표로 묶으면 내 위젯이로드되지 않습니다. 내 게시글에서 언급 했어야합니다. – David

+0

@Christopher Stevenson, 나는 그 포스트를 검토했지만, 애트리뷰트를 추가 할 때 .net이 실제로 html에 속성을 추가하는 방식과 아포스트로피의 인코딩을 다룬다. 위젯에서 아포 스트로피 사용을 테스트했을 때 아포스트로피 인코딩에 문제가 없었습니다. 맞춤 인코더가 작동하지 않는다고 말할 수는 없으며 링크 된 게시물과 내 질문이 반복되는 것으로 생각하지 않습니다. – David

0

구현하는 것 같습니다 :

string dataoptions = "{\"post_message_origin\":\""+ 
    HttpContext.Current.Request.Url.AbsoluteUri + "\"}"; 
dataoptions = dataoptions.Replace("\"", """).Replace("'", "'"); 
MYWIDGET.Attributes.Add("data-options", dataoptions); 
+0

이 방법이 마음에 들었지만 테스트했을 때 JSON 쌍이 아포스트로피로 둘러싸 일 때 위젯 벽에 부딪치지 않았습니다. 불행히도 위젯이로드되지 않았습니다. – David

+0

@David : 죄송합니다. David, 유효한 JSON을 허용하지 않는 깨진 위젯이 있습니다. 어쩌면 위젯이로드되기 전에 클라이언트 측에서 클린업 할 수 있습니다. –

+0

아포스트로피가있는 JSON의 유효성에 대해 확실합니까? Google의 JSON 스타일 가이드 : [link] (https://google-styleguide.googlecode.com/svn/trunk/jsoncstyleguide.xml?showone=Double_Quotes#Double_Quotes) "속성에 따옴표가 필요한 경우 큰 따옴표를 사용해야합니다. 속성 이름은 큰 따옴표로 묶어야하며, 문자열 유형의 속성 값은 큰 따옴표로 묶어야하며 부울 또는 숫자와 같은 다른 값 유형은 큰 따옴표로 묶어서는 안됩니다. " – David

관련 문제