我开始在.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
。在使用相同视图的新操作中,您必须创建模型对象并将其传递给视图。