“简单表单”的 asp.net mvc 模型继承

2023-12-20

你将如何实施这个?

我有以下模型:

class Something
{
     public string Label { get; set; }
     public DateTime Date1 { get; set; }
}

class SomethingStage2 : Something
{
     public DateTime Date2 { get; set; }
}

class SomethingStage3 : SomethingStage2
{
     public DateTime Date3 { get; set; }
}

以及以下编辑器模板:

编辑器模板\东西

<%@ Control Language="C#" Inherits="ViewUserControl<Something>" %>
<%= Html.Hidden( "TypeName", Model.GetType() ) %>
<%= Html.EditorFor( x => x.Label ) %>
<%= Html.EditorFor( x => x.Date1 ) %>

EditorTemplates\SomethingStage2

<%@ Control Language="C#" Inherits="ViewUserControl<SomethingStage2>" %>
<% Html.RenderPartial("EditorTemplates/Something.ascx" %>
<%= Html.EditorFor( x => x.Date2 ) %>

EditorTemplates\SomethingStage3

<%@ Control Language="C#" Inherits="ViewUserControl<SomethingStage3>" %>
<% Html.RenderPartial("EditorTemplates/SomethingStage2.ascx" %>
<%= Html.EditorFor( x => x.Date3 ) %>

为了更新,我有以下控制器方法:

public ActionResult Update( Something model );

从技术上讲,它运作得很好。

更新:为了处理模型的不同子类,我借用了这个想法:http://www.codinginstinct.com/2010/03/aspnet-mvc-and-convention-based-forms.html http://www.codinginstinct.com/2010/03/aspnet-mvc-and-convention-based-forms.html

public class CustomModelBinder : DefaultModelBinder
{
    public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
    {
        var typeName = bindingContext.ValueProvider.GetValue("TypeName");
        var type = Type.GetType(reportFormTypeName.AttemptedValue);
        var model = bindingContext.ModelMetadata.Model;
        bindingContext.ModelMetadata = new ModelMetadata(ModelMetadataProviders.Current, 
            bindingContext.ModelMetadata.ContainerType,
            () => model, type , bindingContext.ModelMetadata.PropertyName);

        return base.BindModel(controllerContext, bindingContext);
    }
}

更新:如果 Date3 应该位于 Label 和 Date1 之间,那么这种方法当然行不通。这就是为什么它适用于简单的表单。而且它可以节省大量时间,

对于简单的情况,编辑表单很简单,这种方法正确吗? 我只是想知道这样做是否“正确”。如果没有,您将如何实施?


您会遇到一个问题。

在你的行动中:public ActionResult Update( Something model );如果你打电话UpdateModel(model)只有基类中的字段才会被绑定。
例如,如果model is a SomethingStage2 Label and Date1将会受到约束,但是Date2将不会。

这是因为Try/UpdateModel对编译时类型而不是运行时类型进行操作。
我也遇到了这个问题。我在这里发布了解决方案:
MVC 2 接口上的 UpdateModel,是否应该忽略 ModelBinderAttribute? https://stackoverflow.com/questions/3257867/mvc-2-updatemodel-on-interface-should-modelbinderattribute-be-ignored

(我假设你的所有文件中都缺少右括号Html.EditorFor陈述有拼写错误)

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

“简单表单”的 asp.net mvc 模型继承 的相关文章

  • 在 mvc3 中将下拉列表的选定值从视图传递到控制器?

    我有 mvc3 Web 应用程序 我使用了 EF 并从数据库填充了两个下拉列表 现在 当我从这些下拉列表中选择值时 我需要在网络网格内显示它们 我怎样才能做到这一点 using Html BeginForm Html ValidationS
  • Hub、Spoke 和 ESB 之间的区别

    我知道对此已经有一个很好的问题 但它并没有真正回答我正在寻找的问题 据我了解 1 两者都用作应用程序之间的中心焦点2 两者都可以在服务 应用程序之间使用路由 中介 转换等 但我真正能看到的唯一区别是 中心辐射型通常有许多不同的格式进入中心
  • JVM 内存类型

    我正在做一个监控项目 我们有监控软件正在运行并从服务器重新收集指标 一切工作正常 但我们需要一些有关 JVM 内存使用情况详细信息 我们有一些具有不同内存类型的列 我们需要知道这些是什么 Heap Non Heap Usage Peak C
  • JPA 实体和/与 DTO

    在这些情况下帮助决定何时使用 DTO 以及何时使用 Entity 的总体思路是什么 UI 服务器端java调用服务 它应该获取 发送实体还是 DTO Web 服务调用服务 服务是否应该接受实体或 DTO 我喜欢阅读传递实体的代码 传递更简单
  • 如何动态添加 mixin 作为基类而不出现 MRO 错误?

    说我有课A B and C Class A and B都是 Class 的 mixin 类C class A object pass class B object pass class C object A B pass 这在实例化 C 类
  • 在 MVC 中拥有巨大的控制器或许多控制器更好?

    我们正在 ASP NET MVC 中构建一个相当大的 HR 应用程序 到目前为止 我们的控制器变得相当大 例如 我们有一个员工控制器 并且包含所有员工视图 个人信息 员工扣除额 家属等 每个视图都可能有多个操作或子视图 例如 CRUD 每个
  • n 层架构 - BLL、DAL 和接口。什么是最佳实践?

    我有一个关于 n 层架构的问题 在问这个问题之前 我想了很久 因为这里已经有很多类似的问题了 但是 在看了一天半并阅读了其他答案之后 我仍然不确定 各种看似相似的术语和不同的方法让我感到困惑 如果我在不同的类库中有一个 BLL 和一个 DA
  • 如何在迭代器内使用 Html.DisplayFor ?

    I am lovingMVC 2 整个事情非常适合网络 然而 有一项功能我无法从Html DisplayFor 功能 lt Page Inherits ViewPage
  • 如何通过WMI确定操作系统平台?

    我试图弄清楚 WMI 中是否有一个位置可以返回可在 所有 版本的 Windows 上工作的操作系统架构 即 32 位或 64 位 当我发现以下内容时 我以为我已经弄清楚了我的Win2k8系统 Win32 OperatingSystem OS
  • 存储徽章标准的最佳方式?

    我一直在考虑如何在新网站上实现类似于SO的徽章功能 存储徽章标准的最佳方式是什么 两个想法 All code 第二系统 创建一个元架构来定义徽章及其标准 在数据库中存储一些信息 并让代码查询它以找出徽章及其标准 还有更好的方法吗 Rules
  • 以数据为中心的应用程序模型和面向对象的应用程序模型有什么区别?

    什么是以数据为中心的应用程序 与面向对象的应用程序模型有什么区别 这两个概念有些正交 以数据为中心的应用程序 http en wikipedia org wiki Database centric architecture数据库起着关键作用
  • 哪种语言(在 JVM 上运行)最适合创建 DSL?

    我们需要创建复杂的固定长度和可变长度字符串 这些字符串可能代表客户资料 订单等 你们建议使用哪种基于 JVM 的编程语言 想法是让最终用户使用此 DSL 创建字符串 所以我正在寻找验证 代码完成等 Groovy http docs code
  • 有人使用自定义 ViewMasterPage 吗?

    最近 当我构建我的 ASP NET MVC 应用程序时 我倾向于在我的母版页中始终需要计算 格式化和配置许多项目 其中一些项目包括 我喜欢将特定的类附加到 body 标记 就像 WordPress 那样来帮助我的 CSS 解决问题 我通常会
  • 使用多个提供程序的客户端应用程序应使用什么设计/模式?

    这是一个与设计相关的问题 假设我们有一个名为 ClientAPI 的公共 API 其中包含一些 Web 方法 例如 CreateAccount GetAccount 根据客户的不同 我们使用许多不同的提供商来满足这些请求 假设我们有 Pro
  • 如何发出 JMS 同步请求

    我有一个 Web 应用程序 预计将从外部应用程序获取和显示数据 该外部应用程序只能通过消息传递 JMS 访问 因此 如果用户在浏览器上提交请求 则同一 HTTP 请求线程将必须与消息系统 MQ 系列 交互 以便同一请求线程可以显示从消息系统
  • 呈现模型与被动视图

    我想知道上述两种模式之间的区别 当您考虑到您需要在表示模型模式中同步代码并且该代码位于表示模型本身中时 那么我认为这些模式非常相似 两者都将事件委托给演示模型 演示者 演示模型和演示者命令域模型 并且也观察域模型 当发生更改时 它们都与视图
  • 为什么要分离接口和实现?

    在生产代码中 我经常看到定义如下的类 public interface SomeComponent Some methods public class SomeComponentImpl implements SomeComponent S
  • 是否有用于序列化和反序列化各种格式的对象层次结构的模式?

    给定一个复杂的对象层次结构 幸运的是它不包含循环引用 如何实现支持各种格式的序列化 我不是来讨论实际实施的 相反 我正在寻找可能派上用场的设计模式的提示 更准确地说 我正在使用 Ruby 我想解析 XML 和 JSON 数据以构建复杂的对象
  • List、IList、IEnumerable、IQueryable、ICollection,哪个返回类型最灵活?

    我之前已经在这里看到过这个问题 但我不满意我理解的完整后果 问题是使用 linq to sql 返回的数据层应该使用什么返回类型以获得最大的灵活性和查询能力 这是我读过 发现的 IEnumerable 是有限的 只允许向前读操作 IEnum
  • 如何在 ASP.NET MVC 2.0 中的视图之外创建 HtmlHelper?

    我们正在将 ASP NET MVC 1 0 应用程序升级到 2 0 版本 部分代码需要使用 LinkExtensions 而 LinkExtensions 需要 HtmlHelper 才能呈现 虽然我们知道某些代码没有正确遵循 MVC 模型

随机推荐

  • Google/Facebook 注册 Azure AD B2C 后跳过验证页面

    我想禁用 跳过要求在 Google Facebook 注册后修改显示名称 名字 姓氏的验证页面 我想直接重定向到我的应用程序 我正在使用 AD B2C 自定义策略 我尝试删除 InputClaims 和 OutputClaims
  • 在 python alpine docker 中安装 python numpy 模块

    我正在尝试 dockerize 我的 python 应用程序 构建 Dockerfile 和安装依赖项时显示错误scikit learn ie numpy Dockerfile FROM python alpine3 8 RUN apk u
  • 改进 Ubuntu 12.04 (GTK) 下的 JFileChooser

    我有一个问题JFileChooser在 Ubuntu 12 04 下 我使用此代码来设置外观 javax swing UIManager setLookAndFeel javax swing UIManager getSystemLookA
  • 检查 Android Media Player 是否可以播放文件

    在Android中 有没有办法检查给定文件是否是媒体播放器的合法文件 这是我当前测试文件是否可以在媒体播放器中播放的方法 public boolean isPlayable File file try Uri uri Uri fromFil
  • 使用 Java 将 Paypal 集成到 Web 应用程序中

    我想将 paypal 集成到我的网络应用程序中 我正在使用 RESTEasy API 来处理宁静的请求 我想知道如何将 paypal 集成到我的应用程序中 我已经从他们的网站下载了 paypal java sdk 但现在我没有好的应用程序可
  • Powershell:导入模块

    我一直在尝试在 win2008 标准服务器上使用应用程序结构缓存 当我执行以下命令时 我得到 导入模块分布式缓存管理 Import Module 未加载指定的模块 DistributedCacheAdministration 因为在任何模块
  • 加载位图时出现内存不足错误

    我有一个带有 3 个活动的 Android 应用程序 A1 starts gt A2 starts gt A3 当完成他的过程时 开始 gt A1 所以我不会 finish 应用程序 我在用户交互后始终用 startActivity 开始下
  • Seaborn ValueError:零大小数组到没有身份的缩减操作最小值

    我从他们自己的例子中运行了这个散点图seaborn示例website https seaborn pydata org generated seaborn scatterplot html import seaborn as sns sns
  • System.Drawing.Image.FromStream() 方法中的“参数无效”异常

    我在网站中使用 Image FromStream 方法时遇到了困难 下面的代码在我的电脑上完美运行 但是当我将其上传到测试服务器时 它总是给出 参数无效 异常 if afuImageFile IsUploading afuImageFile
  • 如何设置散景中选定/未选定字形的属性

    我有一个由一些可观测值的时间序列组成的数据集 我想使用散景来查看时间序列中不同点的相图 我想知道的是如何更改选定或未选定字形的属性 在这种情况下 我想减少未选定点的 alpha 或更改选定点的颜色 下面的代码创建了我想要在 ipython
  • 验证器和 ClientIDMode 问题 (ASP.NET)

    ASP NET 4 0 引入了 ClientIDMode 属性 它允许指定如何在输出 html 中呈现 html 元素的 id 我的项目当前设置为 静态 最短 不包含层次结构 ID 当使用任何验证器时 RequiredFieldValida
  • Angular 2 - 在会话中存储的便捷方式

    有没有一种方便的方法可以保存在 sessionStorage 中 而不需要手动监视属性更改和更新 例如 我有一个带有属性 query 的 SearchComponent export class SearchComponent privat
  • 如何在 UISplitViewController 中命名后退按钮

    I have UITableViewController 其名称为新闻 和UIViewController 其名称为 DetailViewController 和UISplitViewController 我希望它在纵向使用 iPad 时显
  • 使用 File.Copy 移动文件或将流写入该位置有什么区别吗?

    我正在重构一些代码 并且有一个问题 我可以对其进行一些评论 原始代码将文件下载到流中 然后 它将流写入临时目录中的文件 然后使用 File Copy 覆盖生产目录中的现有文件 首先将其写入临时目录并使用 File Copy 与立即将流写入生
  • 如何更改 屏幕以使用

    我有这个代码 目前是 和 的组合 我想转向相对布局 但还没有看到这么多这样的例子 对于如何实现这一点的任何建议 我们将不胜感激 关于 XAML 的一些要点 屏幕上出现emptyGrid或phraseGrid 屏幕上出现buttonGrid或
  • Symfony 2.3 - 自定义致命错误

    我在 Symfony 2 3 上遇到了问题 我无法让它工作来获取处理致命错误的自定义函数 Symfony 异常工作正常 如 404 等 但致命错误则不然 这是我在互联网上搜索后得到的 我在 TestBundle 中创建了一个父控制器 另一个
  • 如何在Turbo c++ 4.0中读取文件中的数据?

    我是编程初学者 我正在尝试编写一个从文件中读取 2 个数字的代码 然后 将其显示在 Turbo C 的输出窗口中 我的代码仅读取第一个数字并产生错误的输出 对于第二个数字 include
  • 如何用纯 SQL 编写 LINQ 的 .Skip(1000).Take(100) ?

    SQL 的等价物是什么 Skip LINQ 中的方法 例如 我想从特定数据库表中选择第 1000 1100 行 只用 SQL 就可以做到这一点吗 或者我是否需要选择整个表 然后在内存中查找行 如果可能的话 我希望避免这种情况 因为桌子可能很
  • iPad 分屏视图更改主导航栏颜色

    奇怪的问题 将我的应用程序旋转到纵向 选择工具栏项目并公开 uipopovercontroller 后 如果我旋转回横向 右侧的 UINavigationController SplitView 的 objectAtIndex 0 会更改导
  • “简单表单”的 asp.net mvc 模型继承

    你将如何实施这个 我有以下模型 class Something public string Label get set public DateTime Date1 get set class SomethingStage2 Somethin