如何解决ASP.NET Web 窗体:如何将列表传递给用户控件?
我的网站有帖子类别(例如长篇阅读、常见问题解答)。
我试图两次显示指向类别页面的链接列表:在页眉和页脚中。
所以我用公开的 ====================================================================================================
======== Exception caught by image resource service ================================================
Invalid argument(s): No host specified in URI file:///null
====================================================================================================
做了一个 CategoryList : UserControl
。
List<Category>
:
CategoryList.ascx
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="CategoryList.ascx.cs" Inherits="WebApp.Controls.CategoryList" %>
<% foreach (WebApp.Data.Category c in Categories) // .CategoriesList.Categories.get returned null
{ %>
<span>
<a href="<%= GetRouteUrl("category-view",new { category = c.CategorySlug }) %>">
<%= c.CategoryName %>
</a> <!-- e.g. <a href="/category/longreads">Longreads</a> -->
</span>
<% } %>
:
CategoryList.ascx.cs
在母版页代码隐藏 using System;
using System.Collections.Generic;
namespace WebApp.Controls
{
public partial class CategoryList : System.Web.UI.UserControl
{
protected void Page_Load(object sender,EventArgs e) { }
public List<Data.Category> Categories { get; set; }
}
}
我还有一个 MainMaster.Master.cs
,它是在初始化期间设置的,如
List<Category>
现在在 public List<Category> Categories { get; } = Data.Categories.All.ToList();
中,我尝试显示此控件,并使用内联数据绑定表达式将列表传递给它:
MainMaster.Master
当我运行这个时,我在 <%@ Register TagPrefix="custom" TagName="CategoryList" Src="~/Controls/CategoryList.ascx" %>
<!-- HTML form opening -->
<custom:CategoryList Categories="<%# Categories %>" runat="server" />
<!-- HTML form closing -->
中得到一个 NullReferenceException
CategoryList.ascx
尽管当我尝试在页面 foreach (WebApp.Data.Category c in Categories) // .CategoriesList.Categories.get returned null
本身上执行相同的 foreach 循环时,它运行正常:
MainMaster.Master
但我不想重复完全相同的代码两次。
有没有正确的方法可以将列表传递给用户控件?
解决方法
尝试在后面的代码中分配您的类别,给控件一个 Id 然后直接引用它:
local ScoreRelativeToPlayer = {
["Bob"] = 10,["Mark"] = 5,["Tesla"] = 11,}
ScoreRelativeToPlayer:Remove("Tesla")
--[[
ScoreRelativeToPlayer = {
["Bob"] = 10,}
]]
您应该能够在您的母版页代码中访问它:
<custom:CategoryList runat="server" id="categoryList" />
您必须确保根据您放置此代码的位置,您的事件以正确的顺序触发。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。