-1

在这里,我Html.Action用于在(Books.cshtml)部分页面中显示一组书籍。

我正在传递路由字典值,但我不知道如何获取路由字典值,Controller也可以Route Dictionary在部分页面(“Books.cshtml”)中获取值。

索引.cshtml

@{RouteValueDictionary objRoute = new RouteValueDictionary();
  objRoute.Add("Book1", "DavinciCode");
  objRoute.Add("Book2", "Pirates");
  objRoute.Add("Book3", "Ghost");
}

@Html.Action("Books", "Home", objRoute)

Books.cshtml(部分页面)

<p style="color:Blue;">
    The list of books are as folows
        <p>@ Book items</p>  
    //Here I need to display list of books (i.e) routevalue Dictionary values
</p>

家庭控制器:

public ActionResult Books()
{
    return PartialView();
}
4

4 回答 4

1

我不认为使用 aRouteValueDictionary来存储你的模型是最好的主意。你也可以使用带有局部视图的模型,你知道的。

我会为局部视图制作一个模型,它代表您需要的数据,即Books 列表。在 上Book,您放置每本书的必要数据,包括显示该书的详细视图所需的键(即Id属性):

public class Book
{
    public int Id { get; internal set; }
    public string Name { get; internal set; }
    // ...
}

然后你让你的局部视图有一个模型,例如List<Book>,在Books.cshtml

@model IList<Book>


<p style="color:Blue;">
     The list of books are as follows:

     <ul>
          @foreach (var book in @Model)
          {
               @Html.ActionLink(book.Name, "BookDetails", new { id = book.Id }) 
          }
     </ul>
于 2013-08-08T06:31:48.223 回答
0

试试下面的解决方案,它对我来说很好。

控制器 :

public ActionResult Books()
{
   Dictionary<int, string> books = new Dictionary<int, string>() { 
              { 1, "ASP.NET MVC #" }, 
              { 2, "C#" }, 
              { 3, "Razor View" } };
   return PartialView("Books", books);
}

局部视图:

@{
    Layout = null;
}
@model Dictionary<int, string>
<h2>The list of books are as follows:</h2>
<ul>
    @foreach (var book in @Model)
    {
        <li><a href="/Home/BookDetails/@book.Key">@book.Value</a></li> 
    }
</ul>

IN VIEW(无论您想在哪里显示书籍列表)

@Html.Action("Books", "YOURCONTROLLERNAME")
于 2013-08-08T07:37:37.997 回答
0

您应该能够按照以下方式访问路线数据:

ViewContext.RouteData.Values["controller"]
于 2013-08-08T06:12:43.903 回答
-1

它们应该显示为方法参数 - 您只需声明您感兴趣的参数:

public ActionResult Books(string Book1, string Book2, string Book3)
{
    return PartialView();
}
于 2013-08-08T06:15:12.673 回答