ASP.NET 中的两种方式数据绑定

2023-11-21

假设我们有一个对象

class Entity
{
    public string ID {get; set;}
    public string Name {get; set;}
}

我想将属性绑定到页面上的两个文本框,如下所示:

<asp:FormView ID="FormView" runat="server">
  <ItemTemplate>
    <asp:textbox ID="TextId" Text='<%# Bind("ID") %>'/>
    <asp:textbox ID="TextId" Text='<%# Bind("Name") %>'/>
  </ItemTemplate>
</asp:FormView>

然后将其写在后面的代码中

public EntityObject
{
    get { return ViewState["Entity"] as Entity; }
    set { ViewState["Entity"] = value; }
}

protected override void OnInit(EventArgs e)
{
    if (EntityObject== null)
        EntityObject= new EntityObject();

    FormView.DataSource = new[] { EntityObject };
    FormView.DataBind();
    base.OnInit(e);
}

当我在文本框中输入值时,我希望 EntityObject 在回发后重新加载页面时在属性中包含这些值,但属性始终为 null。


遗憾的是,ASP.NET 不支持与 .net 对象的双向绑定... 相反,您可以在每次回发时使用类似“手动绑定”的内容(此处 AddIncomeSources 是 RepeaterControl)

public List<Income> AdditionalIncomeList 
{
    get { return ViewState["AdditionalIncome"] as List<Income>; }
    set { ViewState["AdditionalIncome"] = value; }
} 

foreach (RepeaterItem item in AddIncomeSources.Items)
{
    var amount = (TextBox)item.Controls.Cast<Control>().First(c => c.ID == "Amount");
    var document = (DropDownList)item.Controls.Cast<Control>().First(c => c.ID == "Document");
    AdditionalIncomeList[item.ItemIndex].Amount = amount.Text.ToDouble();
    AdditionalIncomeList[item.ItemIndex].IncomeDocument = document.SelectedValue;
}

AddIncomeSources.DataSource = AdditionalIncomeList;
AddIncomeSources.DataBind();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ASP.NET 中的两种方式数据绑定 的相关文章

随机推荐

  • 在 python 中,如何在连接之前将 sqlite 数据库完全加载到内存中? [复制]

    这个问题在这里已经有答案了 我有一个 100 兆字节的 sqlite 数据库文件 我想在执行 SQL 查询之前将其加载到内存中 在 python 中可以做到这一点吗 Thanks apsw是 sqlite 的替代包装器 它使您能够在执行操作
  • 什么时候 dispose 方法不会被调用?

    我正在读书this前几天的文章 我想知道为什么有 Finalizer 和 Dispose 方法 我读here关于为什么您可能想要将 Dispose 添加到 Finalizer 中 我好奇的是 什么时候 Finalizer 会通过 Dispo
  • JSX 元素中带有 withStyles 的通用类型参数

    在 React with Material ui 中 我尝试创建一个接受通用参数并使用withStylesHOC 注入我的风格 第一种方法是这样的 const styles theme Theme gt createStyles card
  • 使用单个语句分配整个数组

    假设我声明并初始化 int a 3 1 2 3 以后如何才能一次性分配整个数组呢 IE a 3 2 1 如果您的 C 编译器支持复合文字 您可以使用memcpy memcpy a int 3 2 1 sizeof a 如果您不打算在其中添加
  • 如何使 flatpickr datepicker 在 livewire / alpinejs 应用程序中具有反应性?

    在我的 laravel 7 livewire 1 3 alpinejs 2 项目中 我添加了 flatpickr datepicker 从https flatpickr js orgdatepicker 工作正常 但反应式不起作用 在下面的
  • 使用 Javascript(或 Angular)在每个部分上组合具有不同 Content-Type 的 multipart/form-data

    问错了问题 请参阅下面的更新 我需要将我的 AngularJS 项目与现有的 RESTful API 集成 这些 API 使用 POST 请求upload a file 并在请求中提交表单数据 不幸的是 其中一个表单输入需要位于Conten
  • GCP:您没有足够的权限通过 SSH 连接到此实例

    我在一个 GCP 项目上拥有一个 非管理员 帐户 当我启动 Dataproc 集群时 GCP 会启动 3 个虚拟机 当我尝试通过以下方式访问其中一台虚拟机时SSH 在浏览器中 我收到以下错误 我尝试添加推荐权限 但无法添加iam servi
  • 使用 jQuery / Phonegap 进行 Soap 查询在 Android 上总是失败

    我使用 jQuery mobile 和 Phonegap 现在的 Cordova 开发了一个 iPhone Android 应用程序 这个应用程序使用不同的服务没有问题 其中一项服务是 Soap 服务 因此我使用 jQuery 的 jsSO
  • 如何在运行批处理文件时不打开Cmd窗口

    我编写的每个批处理文件都会打开一个 Cmd 窗口并使其保持打开状态 直到程序完成 要在 bat 文件中包含什么命令字符串才能不打开 CMD 窗口或打开它并立即隐藏它 我必须留在 MSW7 Pro 内置编程的范围内 现在 我只是使用 msg
  • 串口二进制传输变回车

    上周我一直在尝试用 C 实现一个原始的串行文件传输协议 我遇到了一个非常奇怪的问题 我似乎无法在网上找到解决方案 我已经设法通过串行端口传输二进制数据并接收它 但在此过程中 所有 0D 字节都转换为 0A 以下是我的代码 include
  • 遗传算法中防止近亲繁殖和单一栽培(新手问题)

    我正在写一个遗传算法 我的人口很快就形成了单一文化 我使用的是具有少量离散基因 每个个体 24 个基因 的小群体 32 个个体 和单点交叉交配方法 将其与轮盘赌选择策略结合起来 很容易看出所有遗传多样性是如何在短短几十代内消失的 我想知道的
  • 使用导航抽屉保存片段状态

    我想在使用 android 导航抽屉切换片段时保存片段的状态 如果之前已加载过该片段 则不应刷新该片段 是否可以 要保持片段的状态 您必须调用setRetainInstance true 片段内的onCreate 它能做什么 控制fragm
  • $route.reload() 不适用于 ui-router

    我已经切换到用户界面路由器 一切都很顺利 除了一件事 在我的页面上 我有一个可以更改应用程序上下文的选择 无论如何 以前 当这个上下文改变时 我正在执行这段代码 特别是 set方法 use strict angular module mai
  • Firebase 10.0.:InternalFirebaseAuth.FIREBASE_AUTH_API 在此设备上不可用

    我正在使用 Firebase 身份验证 使用 Google 帐户 开发 Android 应用程序 最近每次尝试连接时都会遇到以下异常 com google firebase FirebaseApiNotAvailableException
  • 使用 DOS 或 BIOS 显示字符

    翻翻拉尔夫 布朗的中断列表 我发现有很多不同的方法可以将文本字符输出到屏幕上 ROM BIOS API 提供以下功能 AH 09h 在光标位置写入字符和属性 AH 0Ah 仅在光标位置写入字符 AH 0Eh 电传打字机输出 AH 13h 写
  • 如何使用 MySQL 函数按属性删除 JSON 数组中的对象?

    假设存储在 MySQL 中的以下 JSONjson数据类型 users group manager userID a123 group employee userID a456 如何删除用户对象 userID a456 不知道它在数组中的位
  • MaxExpansionDepth 与最新的 webapi 和微风

    我最近将所有 nuget 包更新为 EF6 的最新版本 breeze 1 4 5 system web http odata 5 0 0 0 以及所有其他可用的好东西 现在 对于包含 x y z 这样的扩展的一个查询 我收到如下错误 A f
  • 哪里可以下载JMXMP?

    我想使用 VisualVM 通过 JMX 远程分析 Java 应用程序 由于它是经过 NAT 和防火墙保护的 EC2 实例 因此我无法使用默认的 RMI 方法 而需要使用必须首先下载的可选 JMXMP 扩展 注意 如果您想使用 JMXMP
  • 如何在不重新启动服务器的情况下停止 Jenkins 上不可阻挡的僵尸作业?

    我们的 Jenkins 服务器有一个作业已经运行了三天 但没有做任何事情 单击角落里的小 X 不会执行任何操作 控制台输出日志也不会显示任何内容 我检查了我们的构建服务器 该作业实际上似乎根本没有运行 有没有办法通过编辑某些文件或锁定或其他
  • ASP.NET 中的两种方式数据绑定

    假设我们有一个对象 class Entity public string ID get set public string Name get set 我想将属性绑定到页面上的两个文本框 如下所示