簡體   English   中英

傳遞RoteData通過mvc模型查看

[英]pass RoteData to view by mvc model

我目前正在學習asp.net核心,因此嘗試將RouteData添加到我的mvc模型並將其傳遞給視圖,但是當我計算數據值的數量( @Model.Data.Count )時,它返回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>
    }

只要擁有ViewData屬性,就不需要自己的Dictionary ,但是每次獲取object都應該像這樣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()方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM