传递RoteData通过mvc模型查看
pass RoteData to view by mvc model
我目前正在学习 asp.net 核心,因此尝试将 RouteData 添加到我的 mvc 模型并将其传递给视图,但是当我计算数据值 (@Model.Data.Count
) 的数量时,它 returns 0. 我不想在我的视图代码中使用 ViewBag 或 @ViewContext.RouteData.Values[key]
。
mvc 路由
app.UseMvc(route =>
{
route.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}/{*catchall}");
});
我的操作方法
public ViewResult List(string id)
{
var r = new Result
{
Controller = nameof(HomeController),
Action = nameof(List),
};
// var catch=RouteData.Values["catchall"]; this line is working fine
r.Data["id"] = id ?? "<no value>";
r.Data["catchall"] = RouteData.Values["catchall"];
//when I checked r.Data.count it returns 0 even in here
return View("Result", r);
}
和我的观点
@model Result
.
.
@foreach (var key in Model.Data.Keys)
{
<tr><th>@key :</th><td>@Model.Data[key]</td></tr>
}
你不需要自己的 Dictionary
只要你有 ViewData
属性,但你应该在每次得到它时都像这样投出你的 object
:
public ViewResult List(string id)
{
var r = new Result
{
Controller = nameof(HomeController),
Action = nameof(List),
};
ViewData["id"] = id ?? "<no value>";
ViewData["catchall"] = RouteData.Values["catchall"];
return View("Result", r);
}
在您看来:
<tr><th>id :</th><td>@(int)ViewData["id"]</td></tr>
我想你也遇到了同样的问题 - 你应该从 object
中获取值。你得到 string
属性 因为每个对象都有 .ToSting()
方法。
我目前正在学习 asp.net 核心,因此尝试将 RouteData 添加到我的 mvc 模型并将其传递给视图,但是当我计算数据值 (@Model.Data.Count
) 的数量时,它 returns 0. 我不想在我的视图代码中使用 ViewBag 或 @ViewContext.RouteData.Values[key]
。
mvc 路由
app.UseMvc(route =>
{
route.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}/{*catchall}");
});
我的操作方法
public ViewResult List(string id)
{
var r = new Result
{
Controller = nameof(HomeController),
Action = nameof(List),
};
// var catch=RouteData.Values["catchall"]; this line is working fine
r.Data["id"] = id ?? "<no value>";
r.Data["catchall"] = RouteData.Values["catchall"];
//when I checked r.Data.count it returns 0 even in here
return View("Result", r);
}
和我的观点
@model Result
.
.
@foreach (var key in Model.Data.Keys)
{
<tr><th>@key :</th><td>@Model.Data[key]</td></tr>
}
你不需要自己的 Dictionary
只要你有 ViewData
属性,但你应该在每次得到它时都像这样投出你的 object
:
public ViewResult List(string id)
{
var r = new Result
{
Controller = nameof(HomeController),
Action = nameof(List),
};
ViewData["id"] = id ?? "<no value>";
ViewData["catchall"] = RouteData.Values["catchall"];
return View("Result", r);
}
在您看来:
<tr><th>id :</th><td>@(int)ViewData["id"]</td></tr>
我想你也遇到了同样的问题 - 你应该从 object
中获取值。你得到 string
属性 因为每个对象都有 .ToSting()
方法。