2010-03-19 2 views
1

나는 코드 셰어 블로그 덧글을 만들 필요가 있습니다코드의 셰어 블로그 코멘트를 작성

SPSecurity.RunWithElevatedPrivileges(delegate() 
    { 
     sw.AllowUnsafeUpdates = true; 

     SPList spList = SPContext.Current.Web.Lists["Kommentare"]; 
     SPListItem listItem = spList.Items.Add(); 
     listItem[listItem.Fields["Titel des Beitrags"].InternalName] = SPContext.Current.Item["Title"]; 
     listItem[listItem.Fields["Titel"].InternalName] = titlearea.Value; 
     listItem[listItem.Fields["Textkörper"].InternalName] = CommentArea.Value; 
     listItem[SPBuiltInFieldId.Author] = curUser; 
     //listItem[SPBuiltInFieldId.Modified] = curUser; 
     listItem.Update(); 
     //spList.Update(); 
     sw.AllowUnsafeUpdates = false; 
    }); 

하지만 난 항상 "잘못된 데이터를 얻을 수는 목록 항목을 업데이트하는 데 사용 된 당신이 필드를. 업데이트하려고 시도 할 수 있습니다. "

Systemupdate를 시도했는데 값이 유효한 것 같습니다.

+0

글쎄, Posttitle은 SPLookupField이므로 "# {ID}; {Title}" 마지막으로 문제가 발생합니다. –

답변

0

확인은 Posttitle는 SPLookupField, 그리고에 의해 작성 될 수있다 : "{ID} # {제목}"

1

저자 필드는 읽기 전용이며 공유 지점은 자동으로 로그온 한 사용자 이름을 지정합니다.

그래서 당신은 라인 listItem[SPBuiltInFieldId.Author] = curUser;

+0

감사합니다.하지만 슬프게도 아무런 차이가 없습니다. –

0

어쩌면이 문제와 관련이 있지만 SPWeb 개체를 만드는 (또는 컨텍스트를 사용)하는 외부 대리자를 주석 한 후 그것을 시도 할 수있는 사용자가없는 경우 적절한 권한이 코드를 실행하면 올바르게 승격되지 않습니다. 같은 것을 할 :

SPSecurity.RunWithElevatedPrivileges(delegate { 
using (SPSite elevatedSite = new SPSite(SPContext.Current.Site.ID)) 
using (SPWeb elevatedSite = elevatedSite.RootWeb) 
{ 

//impl 

}}); 
0

되는 listItem [listItem.Fields [ "Titel 데 Beitrags"] InternalName.] = SPContext.Current.Item [ "제목"];

SPContext.Current.Item이 주석을 추가 할 블로그 게시물에 대한 참조를 가리 킵니까?

이것은 블로그 게시물의 표준 "Add Comments"웹 파트를 대체하는 사용자 지정 웹 파트에서 실행되는 코드입니다.

+0

예. 게시물 http://stackoverflow.com/questions/1769612/userimage-in-sharepoint-blog-comment에 따르면 나는 블로그 쇼 Webpart를 다시 구현해야했지만 원래의 포스트 주석 파트는 그대로 두었다. 불행히도 이것에 의해 코멘트 포스트 후의 페이지 리프레쉬는 코멘트가리스트에 푸시되기 전에 페이지로 다시 인도합니다. –

0

이 작동 확인

public static void AddComment(string url) 
    { 
     using (SPSite site = new SPSite(url)) 
     { 
      site.AllowUnsafeUpdates = true; 
      using (SPWeb web = site.OpenWeb()) 
      { 
       web.AllowUnsafeUpdates = true; 
       SPList commentList = web.Lists["Comments"]; 
       SPListItem newItem = commentList.AddItem(); 
       newItem["Body"] = "body"; 
       newItem["Title"] = "title"; 
       newItem["PostTitle"] = "2;#post1"; 
       newItem.Update(); 
      } 
     } 
    } 

당신은 읽기를 기록 할 수있다 저자와 같은 단 하나의 필드.