0

我有一个 PartialView 是一个图像上传,基本上我显示一些图像,然后显示正常的上传按钮:-

@model MvcCommons.ViewModels.ImageModel

<table>
    @if (Model != null)
    {
        foreach (var item in Model)
        {
            <tr>
                <td>
                    <img src= "@Url.Content("/Uploads/" + item.FileName)" />
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.Description)
                </td>
            </tr>    
        }
    }

</table>

@using (Html.BeginForm("Save", "File", FormMethod.Post, new { enctype = "multipart/form-data" })) {
    <input type="file" name="file" />
    <input type="submit" value="submit" /> <br />
    <input type="text" name="description" /> 
}

现在我的想法是在不同的页面中有这个。我已经在 1 页中尝试过并且工作正常,但是当我上传图片时,

public ActionResult ImageUpload()
{
    ImageModel model = new ImageModel();
    model.Populate();
    return View(model);
}

我想回到“以前的”视图,即托管此部分视图的视图?当我return View(model)像上面那样做时,我会进入ImageUpload我不想看到的局部视图。

感谢您的帮助和时间。

***更新* ** * ** * ** 我暂时选择了简单的路线,并硬编码了实际的视图名称

public ActionResult ImageUpload()
{
    ImageModel model = new ImageModel(); 
    model.Populate(); 
    return View("~/Views/Project/Create.cshtml", model); 
}

但是我遇到了一个错误:-

传入字典的模型项是 type MvcCommons.ViewModels.ImageModel,但是这个字典需要一个 type 的模型项MvcCommons.Models.Project

4

1 回答 1

2

使用带有所需视图名称的字符串的重载。

http://msdn.microsoft.com/en-us/library/dd460310

protected internal ViewResult View(
        string viewName,
        Object model
)

IE

return View("ViewName", model);

如果你在不同的页面中有这个,那么你可以通过动作参数注入上下文;

public ActionResult ImageUpload(string parentViewName)
{
    ImageModel model = new ImageModel();
    model.Populate();
    return View(parentViewName, model);
}

注意:您应该只需要传递视图名称而不是路径:

return View("Create", model);
于 2012-06-01T12:38:30.420 回答