另一个控制器MVC5的显示视图



我开始在.net中开发一些问题。

我创建了一个将图像上传到Azure的视图。此视图包含在称为文档的控制器中。

我想要的是在另一个控制器视图中显示此视图。该视图单独起作用,但是当我尝试引用它时,它会给我一个错误,但我仍然不知道该如何解决。

这是视图" upload.cshtml"

@{
    ViewBag.Title = "Upload";
}
<p>
    @using (Html.BeginForm("Upload", "Documento", FormMethod.Post, new { enctype = "multipart/form-data" }))
    {
        <input type="file" id="fileToUpload" name="image" />
        <input type="submit" id="btnSubmit" value="Upload" />
    }
</p>
<ul style="list-style-type: none; padding: 0;">
    @foreach (var item in Model)
    {
        <li>
            <img src="@item" alt="images" width="100" height="100" />
            <a id="@item" href="#" onclick="deleteImage('@item');">Delete</a>
        </li>
    }
</ul>
<script type="text/jscript">
    //get file size
    function deleteImage(item) {
        try {
            var url = "/Documento/DeleteImage";
            $.post(url, { Name: item }, function (data) {
                window.location.href = "/Documento/Upload";
                alert(data);
            });
        }
        catch (e) {
            alert("Error is :" + e);
        }
    }
</script>

这就是我尝试从另一个控制器索引视图调用视图的方式:

@RenderPage("~/Views/Documento/Upload.cshtml");
@RenderBody();

我遇到的错误是因为" @foreach(模型中的var item)"句子。

我应该怎么做?

看起来您在视图顶部缺少模型。这样的东西:

@model myproject.models.mymodel

其次,您的foreach循环需要一种可衡量的类型。您的模型是iEnumerable还是 @model.someenumerable?

最后,无论@Item在您的循环中的任何内容都应具有IMG SRC和锚固ID属性的单独属性。

您显示的代码尚未完成,或者您有模型问题。这是如何做我认为您正在寻找的任何示例。

查看模型

public class MyModel
{
  public string ProductId {get;set;}
  public string ProductSrc {get;set;}
}

查看

@model IEnumerable<MyModel>
<ul>
@foreach(item in Model)
{
 <li>
   <img src="@item.ProductSrc" />
   <a id="@item.ProductId">Delete</>
 </li>
}

将视图移至Views/Shared文件夹。然后,它将无需做任何特别的事情就可以向所有控制器使用。

您的观点显然期望通过模型传递,因此您必须使用视图从两个控制器中执行此操作。

在有效的控制器中,我认为您有类似

的东西
return View("Upload", model);

或只是

return View(model);

如果您的操作名为Upload。在使用相同视图的新操作中,您必须创建模型对象并将其传递给视图。

最新更新