我一直在网上寻找这个4天,我仍然不知道为什么我的代码无效...
我正在使用ASP.NET MVC 4应用程序,其中包含对sharepoint listData的服务引用以便CRUD数据。
以下是我检索DataContext的方法:
var datacontext = new CogniTICDataContext(new Uri("http://my.service.url/_vti_bin/listdata.svc"));
datacontext.IgnoreResourceNotFoundException = true;
datacontext.Credentials = new NetworkCredential("user", "pass", "Domain");
datacontext.MergeOption = MergeOption.OverwriteChanges;
return datacontext;
完全适用于单个和多个查找字段。但是对于多选领域,没有任何工作。
以下是我正在尝试的内容:
foreach (string domComp in jsonDomComp.Split(';'))
{
PrestatairesFormationsDomaineDeCompétencesValue domaineDeCompetence =
PrestatairesFormationsDomaineDeCompétencesValue
.CreatePrestatairesFormationsDomaineDeCompétencesValue(domComp);
prestataire.DomaineDeCompétences.Add(domaineDeCompetence);
//dc.AttachTo("DomainesDeCompétence", domaineDeCompetence);
//dc.AddLink(prestataire, "DomComp", domaineDeCompetence);
}
//SaveChanges in batch mode
dc.UpdateObject(prestataire);
dc.SaveChanges(System.Data.Services.Client.SaveChangesOptions.Batch);
我评论了AttachTo和AddLink,因为我的“DomaineDeCompétences”不是实体!它不是一个多查找字段,我无权改变它。虽然,如果我尝试添加这两行,我有一个ResourceNotFoundException,因为该实体没有id,这是因为它不是一个实体! (我已经尝试过:dc.IgnoreResourceNotFoundException = true;)
我没有错误,它只是不起作用......任何人都可以帮助我吗?
祝你好运, 弗拉维奥
答案 0 :(得分:1)
而不是使用
prestataire.DomaineDeCompétences = ...
只需使用
prestataire.DomaineDeCompétencesValue = domComp
你可以直接分配字符串。
答案 1 :(得分:-1)
请在SO上查看类似的问题
SP 2013 - Updating a multi-value lookup field via the REST API
和
Updating Lookup Values with the REST API
也可能:
MyListService.Credentials = CredentialCache.DefaultCredentials;
MyListService.Url = "http://yourserver/_vti_bin/lists.asmx";
XmlDocument updateRequest = new XmlDocument();
String updateBatch = "<Batch OnError='Continue'>" +
"<Method ID='1' Cmd='Update'>" +
"<Field Name='ID'>2</Field>" +
"<Field Name='Location'>1;#;#2</Field>" +
"<Field Name='Owners'>1;#;#7</Field>" +
"<Field Name='Choices'>Value1;#Value2</Field>" +
"</Method>" +
"</Batch>";
updateRequest.LoadXml(updateBatch);
XmlNode deleteResult = MyListService.UpdateListItems("Tasks", updateRequest.DocumentElement);