【问题标题】:Bind a List of object using Razor page使用 Razor 页面绑定对象列表
【发布时间】:2019-03-12 18:56:57
【问题描述】:

我有剃须刀页面。 我在处理程序中准备了(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; }

【问题讨论】:

  • 你为什么使用RedirectToPagePermanent
  • 我不知道我还是新的,我认为它会再次加载以绑定数据
  • 您可以添加您的Model 吗?在你的问题中
  • 第一段C#代码在哪个页面?
  • @markdibe 请澄清您的具体问题或添加其他详细信息以准确突出您的需要。正如目前所写的那样,很难准确地说出你在问什么。请参阅How to Ask 页面以获得澄清此问题的帮助。它还缺少minimal reproducible example

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


【解决方案1】:

如果您在 View 加载时生成数据,如下所示:

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

【讨论】:

  • 它不是 mvc 控制器,它们是剃须刀页面而不是视图控制器
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    这很简单

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

    现在开始实际工作

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

      @{
      
        List<VisitorTypes> listVisitorTypes = _db.VisitorTypes.ToList();
      }
      
      1. 最后渲染列表:

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

    【讨论】:

    • 使用上面的代码段和说明让你看懂,也可以用razorview写代码
    • 这不是 MVC。这是 Razor 页面。
    • Mike Brind : 那就是我想说的老兄.. 意味着你可以通过 razor 编写代码,提出问题的人就像 MVC 一样思考
    • 您不应再像在 MVC 视图中那样在 Razor 内容页面中编写代码。
    猜你喜欢
    • 2021-05-15
    • 2021-05-26
    • 1970-01-01
    • 2023-02-04
    • 1970-01-01
    • 2013-08-03
    • 2023-04-06
    • 2021-10-07
    • 2016-08-06
    相关资源
    最近更新 更多