2014-03-05 29 views
1

我開始在.NET中開發,我有一些問題。顯示另一個控制器的視圖MVC5

我創建了一個將圖像上傳到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)」句子。

我該怎麼做?

+0

對不起大家,我已經出。當我調用Upload方法時,我也想獲取url並將其添加到我的Document.Url中,以便創建一個新的Document。我想,一旦我達到了,我將能夠完成你所說的事情。 – dak

回答

1

看起來您在視圖頂部缺少模型。事情是這樣的:

@model MyProject.Models.MyModel

其次你的foreach循環需要一個IEnumerable的類型。你的模型是IEnumerable還是@ Model.SomeIEnumerable?

最後,無論你的循環中有@item,你的img src和anchor 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> 
} 
0

改爲將視圖移動到Views/Shared文件夾。然後它將可供所有控制器使用,而不必做任何特殊的事情。

此外,您的看法顯然希望傳入一個模型,所以你必須從兩個控制器使用視圖來做到這一點。

在這種工作控制器我假設你有類似

return View("Upload", model); 

或只是

return View(model); 

,如果你的動作被命名爲Upload。在使用相同視圖的新操作中,您必須創建模型對象並將其傳遞給視圖。

相關問題