如何在POST后保持Kendo Window打开

时间:2015-05-07 22:34:20

标签: asp.net-mvc kendo-ui popup kendo-asp.net-mvc kendo-window

设置
在MVC应用程序中,我有2个视图。引用_Layout视图的主视图有一个按钮"显示"。然后我有另一个共享视图,其中有一个kendo上传控件。上传视图不引用_Layout视图,但它位于共享文件夹中,因此我可以重复使用它。

要求 当用户单击主视图上的“显示”按钮时,我想在弹出窗口中显示“上载”视图。在弹出窗口中如果用户没有选择文件,那么我想在同一个弹出窗口中显示错误消息。

问题
当用户单击上传按钮而不选择文件时,模型会按预期发布到服务器上传到上载方法。在方法内部,如果

  

ModelState.IsValid == false

,我回到同一个上传视图。但后来我得到了错误

  

0x800a1391 - JavaScript运行时错误:' jQuery'未定义。

现在我可以继续按IE继续IE错误窗口了,最后我得到了上传视图,我可以在ValidationSummary中看到错误,但是它没有显示为popup而是呈现为普通的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")
)
&#13;
&#13;
&#13;

上传视图

&#13;
&#13;
@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>
}
&#13;
&#13;
&#13;

&#13;
&#13;
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
            }
        }
    }
&#13;
&#13;
&#13;

&#13;
&#13;
    public class UploadModel
    {
        [Required(ErrorMessage = "Please click the browse button and select a file.")]    
        public IEnumerable<HttpPostedFileBase> Files { get; set; }     
    }
&#13;
&#13;
&#13;

0 个答案:

没有答案