模型绑定到具有相同属性名称的多个类型

发布于 2024-08-22 19:05:54 字数 461 浏览 11 评论 0原文

我有一个包含 2 个列表框的视图:受众和受众。 我正在

尝试向我的控制器提交一个包含所选索引的表单,该控制器具有此签名的操作方法

public JsonResult Submit(Audience aud, Locale loc)
{
// do stuff
}

: Locale 有一个 ID 属性,因此 Model Binder 对于将所选值分配给哪个属性有点困惑。当受众应该有“2”而区域设置应该有“1”时,两者都被分配值“1”。

问题是如何让页面在提交时区分两者?我们尝试在 Locale 的 ID 值前面添加“locale.”,因此作为数据传递到控制器的参数字符串如下所示 "&locale.id=1&audience.id=2" 但这似乎不起作用。

有什么建议吗?如果需要更多信息,我会提供。

谢谢

戴夫

I have a view that contains 2 list boxes: Audience & Locale

I'm trying to submit a form that contains the selected index of both to my controller, which has an action method of this signature:

public JsonResult Submit(Audience aud, Locale loc)
{
// do stuff
}

The problem I'm having is both Audience & Locale have an ID property, so the Model Binder is a little bit confused over which to assign the selected values to. Both get assigned the value '1', when Audience should have '2' and Locale should have '1'

The question is how can I get the page to differentiate between the two when it's submitting? We've tried prepending the ID value for Locale with "locale.", so the parameter string that gets passed as data to the Controller looks like
"&locale.id=1&audience.id=2" but that doesn't seem to work.

Any suggestions? If more info is needed, I'll supply it.

Thanks

Dave

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

守不住的情 2024-08-29 19:05:54

使用:

public JsonResult Submit([Bind(Prefix = "audience")]Audience aud,[Bind(Prefix = "locale")]Locale loc)
{
// do stuff
}

每个 Audience 字段在 html 字段中的名称中应该有“audience”前缀:audience.id,audience.name,...

<input id="audience_name" name="audience.Name" type="text" value="" />

Use:

public JsonResult Submit([Bind(Prefix = "audience")]Audience aud,[Bind(Prefix = "locale")]Locale loc)
{
// do stuff
}

Every Audience field should have "audience" prefix in name in html field: audience.id,audience.name,...

<input id="audience_name" name="audience.Name" type="text" value="" />
单身情人 2024-08-29 19:05:54

您应该有一个特定的 ViewModel 来将数据放入您的提交操作中。该对象应该具有 AudienceId 和 LocaleId。创建下拉菜单时,您应该使用与您期望的名称相匹配的名称来创建它们。

You should have a specific ViewModel for taking data into your Submit Action. That object should have AudienceId and LocaleId. When you create your dropdowns you should create them with names that match what you expect.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文