使用Razor页面绑定对象列表

时间:2018-10-08 06:31:52

标签: c# asp.net razor asp.net-core razor-pages

我有剃刀页。 我在处理程序中准备了(visitorTypes)列表 我只想束缚他们。我错过了一些东西,但是我不知道什么

这是我的C#代码

[ModelBinder(Name ="Visitors")]
public ICollection<VisitorType> VisitorTypes { get; set; }

public IActionResult OnGetListOfVisitorTypeAsync()
{
    VisitorTypes = _db.VisitorTypes.ToList();
    return RedirectToPagePermanent("/Visitors",VisitorTypes);
}

这是我的剃须刀页面

<div class="container">
        <form method="get"  asp-page-handler="ListOfVisitorType" >
        @foreach (var item in Model.VisitorTypes)
        {
            <label>@item.VisitorTypeName.ToString() </label>
        }
            </form>
    </div>

有人可以解释我做错了什么吗 (我试图返回列表,我试图使其成为一个void方法,但是它们都不适合我)

这是模态

  private string _VisitorTypeName { get; set; }
    public string VisitorTypeName { get {return _VisitorTypeName; } set { _VisitorTypeName = value; } }
    ICollection<Visitor> Visitors { get; set; }

3 个答案:

答案 0 :(得分:0)

如果在加载视图时生成数据,该怎么办?

public IActionResult Visitors()
{
    VisitorTypes = _db.VisitorTypes.ToList();
    return View(VisitorTypes);
}

答案 1 :(得分:0)

您可能通过“ @model?”传递了错误的模型。在剃须刀页面中。

答案 2 :(得分:-1)

这很简单

  1. 首先,您需要了解MVC的实际工作原理及其含义:
    • MVC是一种架构模式,我们使所有事物在模型,视图和控制器方面保持松散耦合
    • 因此,这并不意味着不能直接在“剃刀视图”中编写代码, 例如,我们如何直接用HTML或View编写JavaScript。为了解耦,我们创建了.JS文件以将脚本代码与View(HTML)分开。

现在开始实际工作

  1. 首先,在访问List(VisitorTypes)之前,必须在razorview本身中声明并初始化其值

    @{
    
      List<VisitorTypes> listVisitorTypes = _db.VisitorTypes.ToList();
    }
    
    1. 并最终呈现列表:

              @foreach(listVisitorTypes中的var项)     {         @ item.VisitorTypeName.ToString()     }