我有處理特定模型的局部視圖。 如何將它傳遞給從沒有關於該模型的引用的視圖的部分視圖?如何將模型傳遞給強類型的局部視圖
我的部分觀點有:
@model MyNS.Models.NewsComment
如何從撥打:
@Html.Partial("CommentForm", Model.NewsComments.SingleOrDefault()) //does not work
我有處理特定模型的局部視圖。 如何將它傳遞給從沒有關於該模型的引用的視圖的部分視圖?如何將模型傳遞給強類型的局部視圖
我的部分觀點有:
@model MyNS.Models.NewsComment
如何從撥打:
@Html.Partial("CommentForm", Model.NewsComments.SingleOrDefault()) //does not work
假設你有沒有提到它在您的視圖模型,您可以執行下列操作之一:
@{
var repo = new Models.MyRepo();
var partialModel = repo.GetAll();
}
@Html.Partial("CommentForm", partialModel)
但是這完全違背了ASP.NET MVC的Seperation of Concerns
理論。
我會做的就是把它傳遞給視圖模型(事件,如果我不會用它在我的視圖中),並從我的觀點傳遞給部分。這樣你處理從你的控制器的數據訪問,這將是更好的方法。
UPDATE
我剛剛看到有關錯誤您發表評論。在這種情況下,你會做什麼是一個更好的方法(我上面顯示也將這項工作的第一種情況)如下:
創建一個視圖模型如下:
public class MyViewModel {
public MyNS.Models.News News {get; set;}
public MyNS.Models.NewsComment NewsComment {get; set;}
}
並將其傳遞您的看法如下:
var viewModel = new MyViewModel();
viewModel.News = repo.GetNews();
viewModel.NewsComment = repo.GetNewsComment();
retun View(viewModel);
然後在其上運行您的看法如下:
@Html.Partial("CommentForm", Model.NewsComment)
根據錯誤,模型中的NewsComments屬性是IEnumerable<News>
型的,而應該是IEnumerable<NewsComment>
也許你已經使用了LINQ查詢與錯誤的select語句填充模型的NewsComments財產。
你會得到什麼樣的錯誤(如果有的話)? – scartag
我得到這個錯誤:「傳入字典的模型項目的類型是'MyNS.Models.News',但是這個字典需要一個'MyNS.Models.NewsComment'類型的模型項目;我從新聞模型調用,但我需要從部分視圖插入一個新聞評論項目 – Cris
聽起來好像你的「新聞評論」屬性鍵入爲「新聞」,而不是「新聞評論」。你可以在主視圖(具有NewComments屬性的類)中檢查這個和/或發佈模型的代碼嗎? –