MVC 3:从另一个模型的编辑页面中创建新的模型实例并将其添加到父模型



我一直在想如何最好地实现一个图片库编辑页面,该页面允许用户在MVC 3项目中为我的朋友直接上传图片到图片库。我试着四处搜索,但似乎没有任何关于我要找的东西的可靠文档。

一旦用户创建了图库,控制器就会将它们重定向到编辑页面,我想让用户将新图像上传到图库中。上传后,我可以将其添加到图库模型中,刷新页面,并将其与其他图像一起显示在列表中。

我很难弄清楚如何处理上传部分。我很确定它应该是一个独立于"保存更改"操作的操作,但我不知道我是否应该将上传器实现为部分视图、子操作或其他我还没有听说过的操作。

我的直觉是使用局部视图,但当我这样做时,我不知道如何获得托管页面的强类型库对象,这样我就可以在局部视图中将图像正确添加到正确的库中。

有什么想法可以正确地实现这样的东西吗?

好吧,解决方案比我想象的要容易。

我创建了一个名为UploadImage:的新ActionResult

    [HttpPost]
    public ActionResult UploadImage()
    {
        string galleryId = Request.Form["GalleryId"];
        string title = Request.Form["ImageTitleField"];
        string description = Request.Form["ImageDescriptionField"];
        HttpPostedFileBase imageUpload = Request.Files["ImageUploadField"];
        return RedirectToAction("Edit", new { new Guid(galleryId) });
    }

然后,我为它创建了一个绑定到ImageGallery模型的局部视图,我在Edit页面的主窗体之外使用@Html.Partial("UploadImage", Model)渲染了它。局部视图只包含两个文本字段,标题和描述,以及一个文件上传字段。它还包括一个隐藏字段,该字段采用绑定的ImageGallery的Id属性。

当用户单击"上传"时,上面的方法会启动,允许我生成一个新的图像模型,并使用传递到局部视图中的Id字段将其添加到相应的ImageGallery条目中。上传图像后,用户被重定向到相同的编辑页面,在该页面上,上传的图像与其他图像一起显示在列表中。

最新更新