7

Tôi đang chuyển thuộc tính Folder.Id.UniqueId của thư mục được truy xuất từ ​​truy vấn FindFolders qua chuỗi truy vấn đến một trang khác. Trên trang thứ hai này, tôi muốn sử dụng mà UniqueId để ràng buộc vào thư mục vào danh sách mục tử của nó:Folder.Bind - "Id không đúng định dạng" - API được quản lý của Exchange Web Services

string parentFolderId = Request.QueryString["id"]; 
... 
Folder parentFolder = Folder.Bind(exchangeService, parentFolderId); 
// do something with parent folder 

Khi tôi chạy mã này nó ném một ngoại lệ nói với tôi Id bị thay đổi. Tôi nghĩ có thể nó cần được bọc trong một đối tượng FolderId:

Folder parentFolder = Folder.Bind(exchangeService, new FolderId(parentFolderId)); 

Vấn đề tương tự.

Tôi đã tìm kiếm một lúc và đã tìm thấy một số đề xuất về chuyển đổi Base64/UTF8, nhưng lại không giải quyết được sự cố.

Bất kỳ ai biết cách liên kết với một thư mục có id duy nhất đã cho?

Trả lời

0

Giá trị parentFolderId có được định dạng chính xác hay không, hoặc nó chỉ là một sự lúng túng khi bạn thử và khởi tạo đối tượng thư mục? Bạn có gõ một HttpUtility.UrlEncode trên id trước khi bạn vượt qua nó như một chuỗi truy vấn (đừng quên thực hiện HttpUtility.UrlDecode sau đó)

0

Bạn cần đảm bảo rằng id được mã hóa chính xác. Đây là một ví dụ.

mẫu:

public class FolderViewModel 
{ 
    public string Id { get; set; } 
} 

Bộ điều khiển:

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     ExchangeService service = new ExchangeService(); 
     service.Credentials = new NetworkCredential("username", "pwd", "domain"); 
     service.AutodiscoverUrl("[email protected]"); 

     // Get all folders in the Inbox 
     IEnumerable<FolderViewModel> model = service 
      .FindFolders(WellKnownFolderName.Inbox, new FolderView(int.MaxValue)) 
      .Select(folder => new FolderViewModel { Id = folder.Id.UniqueId }); 

     return View(model); 
    } 

    public ActionResult Bind(string id) 
    { 
     Folder folder = Folder.Bind(service, new FolderId(id)); 
     // TODO: Do something with the selected folder 

     return View(); 
    } 
} 

Và xem Index:

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<SomeNs.Models.FolderViewModel>>" %> 

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> 

<% foreach (var folder in Model) { %> 
    <%: Html.ActionLink(Model.Id, "Bind", new { id = Model.Id }) %> 
<% } %> 

</asp:Content> 
7

Tôi đã có một vấn đề tương tự và sử dụng urlencode/urldecode để đảm bảo id là được định dạng đúng. Tuy nhiên, một trong những người dùng có thông báo sẽ dẫn đến lỗi.

Hóa ra là một số id có dấu + trong đó dẫn đến khoảng trống khi được giải mã. Một thay thế đơn giản của '' the '+' đã thực hiện thủ thuật.

Có thể là vấn đề.

Tôi biết câu hỏi đã được hỏi từ lâu rồi, nhưng điều này có thể hữu ích cho những người khác trong tương lai.

Các vấn đề liên quan