[英]Model does not bind from _Footer.cshtml partial view in _Layout.cshtml page in razor pages
[英]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.