Как сохранить окно Kendo открытым после POST
Настроить
В приложении MVC у меня есть 2 просмотра. Основной вид, который ссылается на вид _Layout, имеет кнопку "Показать". Затем у меня есть другой общий вид, который имеет элемент управления загрузки кендо. Представление загрузки НЕ ссылается на представление _Layout, но оно находится в общей папке, поэтому я могу использовать его повторно.
Требование Когда пользователь нажимает кнопку "Показать" в главном окне, я хочу показать представление "Выгрузить" во всплывающем окне. Во всплывающем окне, если пользователь не выбирает файл, я хочу показать сообщение об ошибке в том же всплывающем окне.
вопросы
Когда пользователь нажимает кнопку загрузки без выбора файла, модель отправляется на сервер в метод загрузки, как и ожидалось. Внутри метода, если
ModelState.IsValid == false
Я возвращаюсь к тому же представлению загрузки. Но тогда я получаю ошибку
0x800a1391 - Ошибка времени выполнения JavaScript: "jQuery" не определен.
Теперь я могу продолжать нажимать кнопку "Продолжить" в окне ошибок IE, и, наконец, я получаю представление загрузки и вижу ошибку в ValidationSummary, однако она не отображается как всплывающее окно, а отображается как обычная HTML-страница.
Ниже мой код
Главный вид
@model MainModel
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
<script>
$(document).ready(function () {
var uploadwindow = $("#uploadwindow");
$("#btnShow").click(function (e) {
uploadwindow.data("kendoWindow")
.open()
.center();
});
});
</script>
<button type="button" class="btn btn-default" id="btnShow">Show</button>
@(Html.Kendo().Window()
.Name("uploadwindow")
.Title("Select the files to upload")
.Width(600)
.Modal(true)
.Visible(false)
.LoadContentFrom("Upload", "Main")
)
Загрузить представление
@model UploadModel
@using (Html.BeginForm("Upload", "Main", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
@Html.ValidationSummary()
@(Html.Kendo().Upload().Name("files"))
<button type="submit">Upload</button>
}
public class MainController : Controller
{
public ActionResult Index()
{
MainModel model = new MainModel()
return View(model);
}
public ActionResult Upload()
{
UploadModel model = new UploadModel();
return View(model);
}
[HttpPost]
public ActionResult Upload (UploadModel model)
{
if (ModelState.IsValid == false)
{
//I want stay on the same Upload view to show error messages
//Here I get JQuery exception when model is not valid
return View(model);
}
else
{
// Do something here and Close the POPUP Window
}
}
}
public class UploadModel
{
[Required(ErrorMessage = "Please click the browse button and select a file.")]
public IEnumerable<HttpPostedFileBase> Files { get; set; }
}