我在这里使用Html.Action
在(Books.cshtml)部分页面中显示一组书籍。
我正在传递路线词典值,但我不知道如何在Controller
中获取路线词典值,也是可以在部分页面(“Books.cshtml”)中获取Route Dictionary
值。
Index.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>
HomeController中:
public ActionResult Books()
{
return PartialView();
}
答案 0 :(得分:0)
您应该能够访问路线数据:
ViewContext.RouteData.Values["controller"]
答案 1 :(得分:0)
它们应该作为方法参数出现 - 您只需要声明您感兴趣的那些:
public ActionResult Books(string Book1, string Book2, string Book3)
{
return PartialView();
}
答案 2 :(得分:0)
我不认为使用RouteValueDictionary
存储您的模型是最好的主意。您知道,您也可以使用部分视图的模型。
我会为部分视图创建一个模型,它代表您需要的数据,即Book
的列表。在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>
答案 3 :(得分:0)
尝试以下解决方案,它对我来说很好。
CONTROLLER:
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>
在视图中(无论您想要显示书籍列表的哪个位置)
@Html.Action("Books", "YOURCONTROLLERNAME")