0

我對C#/ MVC相當陌生,並且堅持理解一些基本的東西,所以也許一個有用的靈魂或兩個人可以幫助我。 我想解決的是Viewmodels和partials視圖的概念。 我想創建一個列表,其中包含我的viewmodel中的所有書籍,並將其解析爲partialView,是一種好方法,還是應該爲「書架」創建一個普通類?ViewModels和PartialView問題MVC C#

無論如何,我不能讓我的'書架'顯示在我的局部視圖中,並得到了完全不同的錯誤,所以我有點失落,開始排除故障。

下方代碼給我下面的錯誤大氣壓:錯誤CS1001:標識符預期

//In my Model folder 
Public class Book 
{ 
public int ID  { get; set; } 
public string Name { get; set; } 
public int Pages { get; set; } 
} 

//In my ViewModel folder 
public class BookshelfVM 
{ 
public List<Book> Books { get; set; } 
} 

//Controller action 

public class BookshelfController : Controller 
{ 
public ActionResult ListBook() 
{ 
    BookshelfVM Viewmodel = new BookshelfVM(); 

     Viewmodel.Books = new List<Book>() 
     { 
      new Book() 
      { 
       ID = 1, 
       Name = "How to...", 
       Pages = 312 
      }, 
      new Card()  
      { 
       ID = 2, 
       Name = "How to... two", 
       Pages = 512 
      } 
     }; 
     return View("_ListBook", Viewmodel); 
} 
} 

//View 
@model How.ViewModels.BookshelfVM 
@{ 
ViewBag.Title = "Bookshelf"; 
} 
Lorem ipsum 
<div> 
    <p> 
     @Html.Partial("_ListBook")</p> *error pointing here 
</div> 

//Partial View 
@model How.ViewModels.BookshelfVM 

@foreach (var Book in How.Models.) 
{ 
<div> 

    @Model.Book 
</div> 
} 
+1

你有一個語法錯誤,請檢查你的剃鬚刀的代碼,'在How.Models.' VAR書刪除最後一個時期。 –

回答

0

您需要將模型傳遞到您的局部視圖。相反的:

@Html.Partial("_ListBook") 

你需要:

@Html.Partial("_ListBook", Model) 

雖然這是一個有點混亂,爲什麼你的控制器動作也返回相同的局部視圖。不知道你的推理是否有部分視圖通常用於呈現重複頁面的某個部分或者通過ajax加載的頁面的某個部分。

此外,foreach循環是錯誤的。您需要:

@foreach (var book in Model.Books) 
{ 
    <div>@book.Name</div> 
}