子对象的 MVC 模型绑定命名约定?

2024-03-19

当存在子属性时,我在默认模型绑定命名约定方面遇到问题。例如:

我有一个 ViewModel,看起来像这样:

public class UserViewModel
{
    public User BusinessObject { get; set; }
}

我的 User 类有一个名为“NetworkLogin”的属性

我的视图有这样的东西: model.BusinessObject.NetworkLogin)%> model.BusinessObject.NetworkLogin)%> 自动填充

我的控制器,我想做的,是

    [HttpGet]
    public ActionResult UserIndex(string networkLogin) { }

问题: 输入参数“networkLogin”始终为空。这是有道理的,因为 html 元素上的实际参数是 name="BusinessObject.NetworkLogin" 和 id="BusinessObject_NetworkLogin"。但是,我不知道应该在操作方法中使用什么参数名称。我尝试过“businessObject_NetworkLogin”,但它也不起作用。

但是,我有一个确实有效的解决方法,但我不喜欢它。我将其添加到我的 ViewModel 中:

    public string NetworkLogin
    {
        get
        {
            if (BusinessObject == null)
                BusinessObject = new User(); 
            return BusinessObject.NetworkLogin;
        } 
        set
        {
            if (BusinessObject == null)
                BusinessObject = new User();
            BusinessObject.NetworkLogin = value;
        }
    }

我的“查看”页面现在改为这样显示。 model.NetworkLogin)%>

有人可以告诉我默认模型绑定的正确命名约定是什么,这样我就不必采用上述解决方法吗?

谢谢你!


指明前缀,以便模型绑定器知道BusinessObject.NetworkLogin查询字符串参数实际指的是networkLogin这就是您用作操作参数的内容

public ActionResult UserIndex(
    [Bind(Prefix = "BusinessObject")] string networkLogin
) 
{ 
    ...
}

或重用您的视图模型:

public ActionResult UserIndex(UserViewModel model) 
{ 
    // TODO: use model.BusinessObject.NetworkLogin
    // which is gonna be correctly bound here
    ...
}

就您的解决方法而言,一旦您将我的两个建议之一付诸实践,您的视图模型属性实际上应该如下所示:

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

子对象的 MVC 模型绑定命名约定? 的相关文章

随机推荐

  • 类模板特化与函数重载

    我以为我想要模板函数专门化 但是这篇 stackoverflow 文章 https stackoverflow com questions 2197141 function template specialization importanc
  • 导出谷歌图表?

    我编写此代码是为了创建图表 表格和工具栏 google load visualization 1 packages corechart google load visualization 1 packages table google se
  • 新的 Facebook SDK FBSession sessionOpenWithPermissions

    我一直在尝试使用 Facebook 开发 iOS 应用程序 但我是新手 所以我一直在努力让 使用 Facebook 登录 按照 Facebook 上的教程并尝试实现它 但我遇到过 FBSession sessionOpenWithPermi
  • 在 Matlab 中将元胞数组打印为 .txt

    我有一个元胞数组 需要根据特定格式打印在 txt 文件中 我尝试过一些在线帮助 包括matlabcentraldlmcell但即便如此也没有给我想要的答案 分隔符是 t cellarray AAPL 2 20 2011 100 5 MSFT
  • 如何使用ActionBar 夏洛克?

    如何在 Android 应用程序中使用操作栏 sherlock 我已经尝试过该网站 但没有成功 我想要一个背景图像 将应用程序名称居中 操作栏中没有图标 我尝试过这段代码 http tinyurl com pguqag5以及中的例子这个链接
  • 枚举的单独类? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 将 git 存储库向下移动到层次结构级别

    我现在已经搜索了几个小时 但找不到令人满意的答案 尽管这似乎是一个简单的新手问题 我基本上想要完成的是将当前位于项目文件夹旁边的 git 目录移动到项目文件夹中 最好这根本不应该改变存储库历史记录 尽管我不知道这实际上是否可能 我想这样做的
  • Scrapy 中每个项目有多个页面

    免责声明 我对 Scrapy 还很陌生 简单地提出我的问题 如何从页面上的链接检索 Item 属性并将结果返回到同一个 Item 中 给出以下示例 Spider class SiteSpider Spider site loader Sit
  • Azure 函数服务总线输出消息属性

    我正在尝试使用服务总线绑定输出在 JavaScript Azure 函数中设置服务总线消息的元数据 不幸的是 绑定似乎只支持身体 查看文档 我发现您可以通过以下方式在服务总线触发器中访问此信息context bindingData但我没有看
  • 用 ImageMapType、Tile 边界框替换 Google 地图 v3 中的 GTileLayer?

    我需要更新这段代码 radar layer getTileUrl function tile zoom var llp new GPoint tile x 256 tile y 1 256 var urp new GPoint tile x
  • 自动启动android服务

    如何在Android 3 x中自动启动服务 测试平板电脑是三星Galaxy 10 1 我的代码可以在带有 android 2 2 1 的无名平板电脑上运行该代码也可以在带有 android 版本 3 x 的 android 模拟器中运行 C
  • 如何从 VirtualBox 中修改 /etc/hosts

    我有一个应用程序 我必须更改它 etc hosts文件才能命中 这是我的新文件 127 0 0 1 localhost 127 0 0 1 local connectwithme 这在我的本地机器上很容易工作 我只是去local conne
  • Android Retrofit enqueue方法没有返回值

    fun getSurvey MutableList
  • Outlook 对象模型 - 连接到对话清理功能

    Outlook 2010 有一个功能称为对话清理 http office microsoft com en us outlook help use conversation clean up to eliminate redundant m
  • .Net:DataGridView 响应 IBinding.ListChanged 但不响应 CellValueChanged 事件处理程序

    我有一个自定义 IBinding 列表 它会引发 ListChanged 事件 我想在 ListChanged 事件之后重新着色 Datagridview 行 Datagridview 响应 ListChanged 事件并更改单元格值 但从
  • 允许将 Woocommerce 中特定产品类别的最多 3 个产品添加到购物车

    我尝试向免运费的客户发送最多 3 个免费样品 我创建了一些 0 价产品并将它们设置在 样品 产品类别中 该特定产品可以选择 单独出售 因此客户只能购买每个样品之 一 我不知道如何在购物车上只允许最多包含该产品类别的 3 个样品产品 任何帮助
  • 查找具有两个精确预定义差异的对应字符串的同位素

    我有一个名称向量 求和公式 例如 C 4 H 15 O 7 C 13 H 17 O 7 C 3 Cxiv 1 H 15 O 7 C 12 Cxiv 1 H 17 O 7 C 24 H 15 O 4 C 32 H 13 O 10 C 12 C
  • 将 Seq[Either[String, Int]] 转换为 (Seq[String], Seq[Int]) 的有效和/或惯用方法

    稍微简化一下 我的问题来自字符串列表input我想用函数解析parse返回Either String Int Then list map parse 返回一个列表Eithers 程序的下一步是格式化总结所有错误的错误消息or传递已解析的整数
  • QSlider 和按键事件

    我目前有一个 QSlider 可以使用鼠标滚动图像数据帧 我希望能够使用箭头键滚动单个步骤 一帧 这是我当前的 sliderMoved 代码 def sliderMoved self val retrieves the data array
  • 子对象的 MVC 模型绑定命名约定?

    当存在子属性时 我在默认模型绑定命名约定方面遇到问题 例如 我有一个 ViewModel 看起来像这样 public class UserViewModel public User BusinessObject get set 我的 Use