使用 Web 表单脚手架中的值

Working with values in web forms scaffolding

我最近的任务是为我们的团队学习 EF 6 和 Web 表单脚手架。大多数一切对我来说都很完美,即使我准备好讨厌它,我也没有。有几件事我无法按照我希望的方式进行。当我搭建一些 CRUD 页面时效果很好,但我想在插入页面上设置一些默认值。我能够在构造函数或属性中设置值,但在单击事件添加项目之前它们不会进入插入页面。我已经尝试了所有我能想到的方法来找出适用于我的对象以及动态控件的注释。到目前为止,我什么都做不了。我实际上可以删除动态控件并添加我自己的控件并将其添加到插入方法中的对象,但这感觉不对。还有其他方法吗?

具体来说,我想要做的事情是根据创建时间 30 天内的日期时间值在某些字段中设置默认日期。我还有州和县下拉列表,它们不仅仅与我正在处理的对象有关。目前,我在我的 DAL 中使用 EF6 和 LINQ 来使用对象数据源填充下拉列表,它们工作得很好。我也想将它们挂钩为动态控件。我知道我需要 [DataType] 属性,但没有可供选择的下拉选项。此外,我不确定如何在州火灾后连接下拉菜单以让县火灾,以便县会随着每个州的选择而改变。某处是否有涵盖这些内容的教程。我到处搜索,找不到任何指导。

谢谢吉米

由于似乎没有人知道答案,我想我会列出需要的东西来帮助你,如果你有同样的问题。如果您需要使用动态控件中的数据,您将不得不进行大量转换。您必须在您正在使用的容器中找到动态控件并将其解析为动态控件,然后您需要深入了解该控件的控件模板并找到您需要的文本框等并将其解析为所需的控件类型并获取或设置它的值。如果您需要确保代码安全并且必须通过 Fortify 或其他一些静态分析工具,您还必须对值进行编码,因为 fortify 看不到它来自已编码的控件。这变成了一个棘手的问题,继续并切换到标准控件并手动将其添加到插件中要容易得多。

如果您需要知道它是如何工作的,代码行是这样的。

    ((TextBox)(DynamicControl)fvName.FindControl("DynamicID").TemplateControl.FindControl("TextBox1")).Text;

这是我亲手写的,所以可能有些地方不对劲,但这应该能让你走上正轨。

吉米