MVC: Loading and Saving Documents Through Controller HttpPost Methods
Web.TextControl X13 for ASP.NET MVC provides document load and save operations through controller HttpPost methods. The JavaScript API serializes documents as Base64, posts them via jQuery AJAX to MVC actions, and the server processes them using ServerTextControl instances.

With the release of TX Text Control X13, we released an MVC version of TXTextControl.Web that is available through NuGet.
This sample project shows how to load and save documents using controller methods and Javascript. The view contains the TXTextControl.Web HtmlHelper and two buttons to save and to load the document.
@using TXTextControl.Web
@using TXTextControl.Web.MVC
@{
ViewBag.Title = "Index";
}
@* Add TXTextControl.Web to the view *@
@Html.TXTextControl().TextControl().Render()
<input onclick="SaveToController('test.docx')" id="btnSave" type="button" value="Save" />
<input onclick="LoadFromController('test.docx')" id="btnLoad" type="button" value="Load" />
The Javascript function SaveToController uses the method saveDocument to save the document client-side in the internal Unicode format. Then, the jQuery AJAX method calls the controller method SaveTemplate by sending a JSON string that contains the document name and the saved document.
function SaveToController(DocumentName) {
TXTextControl.saveDocument(TXTextControl.streamType.InternalUnicodeFormat,
function (e) {
var serviceURL = "/Home/SaveTemplate";
$.ajax({
type: "POST",
url: serviceURL,
contentType: 'application/json',
data: JSON.stringify({
DocumentName: DocumentName,
BinaryDocument: e.data
}),
success: successFunc,
error: errorFunc
});
function successFunc(data, status) {
alert("Document has been saved successfully.");
}
function errorFunc() {
alert('Error');
}
});
}
The controller HttpPost method accepts the JSON string in form of a model in the parameter. The document is converted to a byte[] array and loaded into a temporary ServerTextControl instance. Finally, the document is saved server-side using the Save method of the ServerTextControl object.
[HttpPost]
public bool SaveTemplate(DocumentViewModel model)
{
string name = model.DocumentName;
byte[] document = Convert.FromBase64String(model.BinaryDocument);
using (TXTextControl.ServerTextControl tx =
new TXTextControl.ServerTextControl())
{
tx.Create();
tx.Load(document, TXTextControl.BinaryStreamType.InternalUnicodeFormat);
tx.Save(Server.MapPath("/App_Data/documents/" + model.DocumentName),
TXTextControl.StreamType.WordprocessingML);
}
return true;
}
The model DocumentViewModel is shown in the code below:
public class DocumentViewModel
{
public string DocumentName { get; set; }
public string BinaryDocument { get; set; }
}
Download the sample from GitHub and test it on your own.
![]()
Download and Fork This Sample on GitHub
We proudly host our sample code on github.com/TextControl.
Please fork and contribute.
Requirements for this sample
- Visual Studio 2012 or better
- TX Text Control .NET Server (trial sufficient)
ASP.NET
Integrate document processing into your applications to create documents such as PDFs and MS Word documents, including client-side document editing, viewing, and electronic signatures.
- Angular
- Blazor
- React
- JavaScript
- ASP.NET MVC, ASP.NET Core, and WebForms
Related Posts
MVC: Loading Files from the Backstage Menu
An MVC partial backstage view lists available files from a directory using a simple document model. When a user clicks a file, JavaScript sends an AJAX request to an HttpPost controller method…
MVC: Replace the File Menu with a Backstage View Menu
Replace the Web.TextControl File menu with a full-page backstage view using JavaScript and CSS. The tutorial disables the default FILE ribbon handler, renders a vertical navigation panel with…
MVC: Replace the Ribbon Table Menu with a Quick Insert Table Drop-down
Replace the default Web.TextControl ribbon table button with a grid-based quick insert dropdown using JavaScript. The tutorial renders a visual row-and-column picker, sends the selected dimensions…
MVC: Arrange a Docked Web.TextControl with a Custom Bar at the Top
Position a docked Web.TextControl below a custom toolbar bar in an MVC view by using CSS and JavaScript to offset the editor. The tutorial wraps the control in a DIV, sets absolute positioning…
MVC: Autosave and Restore Documents to and from the Local Browser Storage
Web.TextControl documents are autosaved to browser localStorage at five-second intervals using the JavaScript saveDocument method. On page reload, the ribbonTabsLoaded event checks for stored…
