I have a Kendo Window on a page, using a partial. Currently when I submit the form, it completes and redirects me to the parent page and the window is gone. I am trying to keep the user in the window until the form is complete and they close the window.
Window Code:
Partial:
Controller Action:
Can someone tell me what I am missing in regards to keeping the user in the window?
Window Code:
@(Html.Kendo().Window()
.Name("fileUpload")
.Title("Upload File Attachments")
.Visible(false)
.Iframe(true)
.Content(@<
text
>@Html.Partial("_FileBrowser", (List<
AttachmentViewModel
>)ViewBag.AttachmentFileViewModel)</
text
>)
.Modal(true)
.HtmlAttributes(new { @style = "width:470px; height:160px;" }))
Partial:
@using Kendo.Mvc.UI
@model List<
StationaryTools.ViewModels.AttachmentViewModel
>
@using (Html.BeginForm("UploadThesefiles", "EquipmentWorkOrder", FormMethod.Post, new { id = "imageBrowser", name = "imageBrowser", target = "_self", enctype = "multipart/form-data" }))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
// get the stationaryID here to store so it doesn't get lost
@Html.HiddenFor(m => m[0].StationaryID)
@Html.HiddenFor(m => m[0].SiteID)
@Html.HiddenFor(m => m[0].EquipmentID)
<
div
class
=
"editor-field"
id
=
"dialogFileUpload"
>
<
table
width
=
"100%"
>
<
tr
>
<
td
class
=
"valveEditSmallLabel"
><
strong
>Attached Files</
strong
></
td
>
<
td
></
td
>
<
td
></
td
>
</
tr
>
@for (int i = 0; i <
Model.Count
; i++)
{
if (!Model[i].HasFile && ViewBag.CanEdit)
{
<tr>
<
td
></
td
>
<
td
>
@Html.TextBoxFor(m => Model[i].File, new { type = "file", @style = "width:300px; margin-right: 4px;" })
</
td
>
</
tr
>
}
if (Model[i].HasFile)
{
<
tr
>
<
td
></
td
>
<
td
>
@Html.ActionLink(Model[i].FileName, "GetThisFile", new { equipmentWorkOrderID = Model[i].StationaryID, stationaryFileName = Model[i].FileName }, new { target = "_blank", @style = "float: right; margin-right:4px;" })
</
td
>
</
tr
>
}
}
<
tr
>
<
td
></
td
>
<
td
class
=
"equipmentListSearchButtonRight"
>
<
input
type
=
"submit"
value=@Resources.Common_UploadFile
id
=
"btnSaveAttachments"
/>
</
td
>
</
tr
>
<
tr
>
<
td
colspan
=
"2"
>
<
span
class
=
"field-validation-error"
>*Attachments can be .jpg, .jpeg, .png or .pdf and must be 1MB or less in size.</
span
>
</
td
>
</
tr
>
<
tr
>
<
td
colspan
=
"2"
>
@Html.ValidationMessageFor(m => m[0].File)
<
div
>@MvcHtmlString.Create((string)TempData["FileUploadMessage"])</
div
>
</
td
>
</
tr
>
</
table
>
</
div
>
}
Controller Action:
[HttpPost]
public ActionResult UploadTheseFiles(List<
AttachmentViewModel
> attachmentFileModels)
{
List<
SalesToolsPOCOLibrary.GetThisStationaryFile_Result
> getFile = siteManager.GetTheseStationaryFiles(attachmentFileModels[0].StationaryID, 0, Constants.FILETYPE_WORKORDER, 7);
string existingFileName = "";
//if (getFile != null)
//{
// // loop through building a collection of attachmentfileviewmodels
// foreach (SalesToolsPOCOLibrary.GetThisStationaryFile_Result file in getFile)
// {
// existingFileName = file.name;
// AttachmentViewModel attachmentFile = new AttachmentViewModel();
// attachmentFile.HasFile = true;
// attachmentFile.FileName = existingFileName;
// attachmentFile.StationaryID = attachmentFileModels[0].StationaryID;
// attachmentFile.EquipmentID = attachmentFileModels[0].EquipmentID;
// //attachmentFileModels.Add(attachmentFile);
// }
//}
if (ModelState.IsValid)
{
// loop through the files in the request, not the attachment view model.
// this is necessary due to the view model having null values for the files in some situations.
for (int i = 0; i < Request.Files.Count; i++)
{
if (Request.Files[i] != null && Request.Files[i].InputStream != null)
{
string filename = System.IO.Path.GetFileName(Request.Files[i].FileName);
byte[] image = new byte[Request.Files[i].InputStream.Length];
Request.Files[i].InputStream.Read(image, 0, image.Length);
TempData["FileUploadMessage"] = siteManager.UploadThisStationaryFile(existingFileName, filename, image, attachmentFileModels[0].StationaryID, 0, Constants.FILETYPE_WORKORDER, (int)base.CurrentUserAuth.USR_SecurityUserID, 7);
}
}
}
else
{
ViewBag.CanEdit = IsUserAuthorized(HttpContext.User.Identity.Name, Constants.FW_WORK_ORDERS_ACCESS, Constants.FW_AUTH_EDIT, 0, (int)attachmentFileModels[0].SiteID);
return PartialView("_FileBrowser", attachmentFileModels);
}
return RedirectToAction("EditEquipmentWorkOrder", new { equipmentWorkOrderID = attachmentFileModels[0].StationaryID, siteID = attachmentFileModels[0].SiteID, equipmentID = 0 });
}
Can someone tell me what I am missing in regards to keeping the user in the window?