public ActionResult Sample45()
 {
     // Check is data posted
     if (Request.HttpMethod == "POST")
     {
         //### Set variables and get POST data
         System.Collections.Hashtable result = new System.Collections.Hashtable();
         String clientId = Request.Form["clientId"];
         String privateKey = Request.Form["privateKey"];
         String folderName = Request.Form["folderName"];
         String fileName = Request.Form["fileName"];
         result.Add("clientId", clientId);
         result.Add("privateKey", privateKey);
         String message = null;
         String table = String.Empty;
         // Check is all needed fields are entered
         if (String.IsNullOrEmpty(clientId) || String.IsNullOrEmpty(privateKey) || String.IsNullOrEmpty(fileName))
         {
             //If not all fields entered send error message
             message = "Please enter all parameters";
             result.Add("error", message);
             // Transfer error message to template
             return View("Sample45", null, result);
         }
         else
         {
             String basePath = Request.Form["basePath"];
             //Check is base path entered
             if (basePath.Equals(""))
             {
                 //If base path empty set base path to the dev server
                 basePath = "https://api.groupdocs.com/v2.0";
             }
             result.Add("basePath", basePath);
             // Create service for Groupdocs account
             GroupdocsService service = new GroupdocsService(basePath, clientId, privateKey);
             String path = String.Empty;
             // Generate path for the file
             if (!String.IsNullOrEmpty(folderName))
             {
                 String last = folderName.Substring(folderName.Length - 1, 1);
                 if (last.Equals("/"))
                 {
                     path = folderName + fileName;
                 } else {
                     path = folderName + "/" + fileName;
                 }
             } else {
                 path = fileName;
             }
             //Get all info for the document
             Groupdocs.Api.Contract.Documents.GetDocumentInfoResult documentInfo = service.GetDocumentMetadata(path);
             if (documentInfo != null)
             {
                 //###Create table with changes for template
                 table = "<table class='border'>";
                 table += "<tr><td><font color='green'>Parameter</font></td><td><font color='green'>Info</font></td></tr>";
                 // Get type of responce object
                 Type res_type = documentInfo.GetType();
                 // Create dictionary for propertyes
                 System.Reflection.PropertyInfo[] properties = res_type.GetProperties();
                 // Convert responce object to dictionary
                 System.Collections.Generic.Dictionary<String, object> output = new System.Collections.Generic.Dictionary<string, object>(properties.Count());
                 //Add each property to the dictionary
                 foreach (System.Reflection.PropertyInfo property in properties)
                 {
                     output.Add(property.Name, property.GetValue(documentInfo, null));
                 }
                 // Get Keys and Values from the dictionary and write them to the result table
                 foreach(System.Collections.Generic.KeyValuePair<string, object> data in output)
                 {
                     if (!data.Value.GetType().Name.Equals("DocumentViewInfo"))
                     {
                         table += "<tr><td>" + data.Key + "</td><td>" + data.Value + "</td></tr>";
                     }
                 }
                 table += "<tr><td>Name</td><td>" + documentInfo.LastView.Document.Name + "</td></tr>";
                 table += "<tr><td>Type</td><td>" + documentInfo.LastView.Document.Type + "</td></tr>";
                 table += "<tr><td>Size</td><td>" + documentInfo.LastView.Document.Size + "</td></tr>";
                 table += "<tr><td>URL</td><td>" + documentInfo.LastView.Document.Url + "</td></tr>";
                 table += "<tr><td>Path</td><td>" + documentInfo.LastView.Document.DocumentPath + "</td></tr>";
                 table += "</table>";
                 //Convert string to HTML string
                 MvcHtmlString infoTable = MvcHtmlString.Create(table);
                 result.Add("result", infoTable);
             }
             // Return Hashtable with results to the template
             return View("Sample45", null, result);
         }
     }
     // If data not posted return to template for filling of necessary fields
     else
     {
         return View("Sample45");
     }
 }