簡體   English   中英

從Razor Page .cshtml文件訪問Model類

[英]Access a Model class from Razor Page .cshtml file

我正在嘗試創建一個簡單的下拉菜單,其中填充了本地數據庫中的類別。 我正在使用.NET Core 2.2。 我正在跟蹤一個使用ASP.NET MVC早期版本的演示,在該演示中他們使用ViewBag從控制器傳輸列表以進行查看。 由於某些原因,ViewBag無法正常工作,並顯示“當前上下文中不存在ViewBag”的編譯錯誤。 經過一番研究后,我選擇使用似乎可以在控制器上運行的ViewData,但是我在顯示模型中的類別名稱時遇到了一些麻煩,因為當我運行頁面時,下拉選項顯示“模型”。 Visportfolio.Category”,而不是類別名稱本身。

我對HTML相當陌生,因此我嘗試從演示中復制代碼,但是在訪問Category類的字段時遇到問題。 根據研究,我嘗試使用ViewBag,ViewData和ViewBag是“可互換的”,但是沒有運氣。

我在其中調用下拉菜單的HTML,代碼未編譯,因為它說CategoryName和CategoryId不包含定義且沒有可訪問的擴展方法

    <form asp-controller="my_dropdown" asp-action="CreatePortfolio" method="post" class="form-horizontal" role="form">
        <div class="form-group">
            <div class="row">
                <div class="alert-danger" asp-validation-summary="ModelOnly"></div>
                <div class="col-xs-12 col-sm-6 col-md-6 col-lg-4">
                    <label asp-for="CategoryName" class="control-label"></label>
                    <select asp-for="CategoryId"
                        class="form-control"
                        asp-items="@(new SelectList(ViewBag.categorylist, "CategoryId", "CategoryName"))">
                    </select>
                    @Html.DropDownList("categorylist",
                        new SelectList((System.Collections.IEnumerable) ViewData["categorylist"]), "Select Category","CategoryName" )
                </div>
            </div>
        </div>
        <div class="form-group">
            <div class="row">
                <div class="col-xs-12 col-sm-6 col-lg-4">
                    <input id="Submit1" type="submit" value="submit" />
                </div>
            </div>
        </div>
    </form>

這是html背后的代碼

public void OnGet()
        {

            // ----- Getting Data From Database Using EntityFrameworkCore ----
            categorylist = (from category in _context.Category
                            select category).ToList();

            // ----- Inserting Select Item in List -----
            categorylist.Insert(0, new Category { CategoryId = 0, CategoryName = "Select" });

            // ----- Assigning categorylist to ViewBag.ListOfCategory -----
           //  ViewBag.categortyList = categorylist;
            ViewData["categorylist"] = categorylist;
        }

模型

namespace Visportfolio.Models
{
    [Table("Category")]
    public class Category
    {
        [Key]
        public int CategoryId { get; set; }
        public string CategoryName { get; set; }
    }
}

你在找

new SelectList(ViewData[categoryList], "Value", "Text")

SelectList有很多重載,您可以使用這里

所以用

@Html.DropDownList("categorylist",
                    new SelectList((System.Collections.IEnumerable) ViewData["categorylist"], "CategoryId", "CategoryName"), "Select Category","CategoryName" )

暫無
暫無

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

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