【发布时间】:2016-02-23 14:08:28
【问题描述】:
我有一个剑道下拉列表。它使用位置名称作为文本和位置 ID 作为值进行设置。但是,我需要将第三个字段绑定到模型(或至少以某种方式返回到我的控制器)。有没有办法绑定额外的数据?我见过几个地方可以通过模板在下拉框中显示附加数据,但我找不到任何将附加值传递回控制器的示例。
下拉框使用的模型有这些字段:
- origLocationName
- origLocationID
- 客户 ID
目前,origLocationName 是下拉菜单中显示的文本值,origLocationID 是绑定到模型并传递给控制器的值。我想要的是能够在用户从下拉框中选择一个选项时绑定 customerID 和 origLocationID。
这是我的下拉框:
@(Html.Kendo().DropDownListFor(m => m.ddLocation)
.Name("ddLocation")
.HtmlAttributes(new { style = "width: 500px;", onchange = "onChange_ddLocation(this)" })
.OptionLabel("Select from List")
.DataTextField("origLocationName")
.DataValueField("origLocationID")
.BindTo(Model.locations)
)
当用户选择一个位置时,我可以像这样访问控制器中的 origLocationID:
[HttpPost]
public ActionResult CustomerDashboard(ModelCustomerDashboard model)
{
...
dash.ddLocation = model.ddLocation;
...
return View(dash);
}
如何同时传递该位置的客户编号及其位置 ID?
一些笔记。 (1.) 我不能只传递一个 ID 并查找位置和客户 ID。每个位置有多个客户。因此,位置 ID 123 可能在公司 ABC 和公司 DEF 中。这不是我设计的,也无法对数据库进行更改;只是用我所拥有的。 (2.) 我考虑将客户 ID 和位置 ID 合并到一个字段中,例如:“CustID:ABC;LocationID:123”。然后我可以解析 ddLocation 并获取这两个值。我不想这样做,因为有些地方不需要客户 ID(有些用户只能看到一个客户),所以目前在 ddLocation 中只有位置 ID 的设置对他们有用。我宁愿不必重写我已经为那个实例所做的一切。
例子:
Dropdown Box
-------------
Visible Text ddLocation ddCustomer
Warehouse 1 123 ABC
Warehouse 2 456 ABC
Studio A 123 DEF
User selects the first item.
Controller
----------
model.ddLocation = '123'
model.ddCustomer = 'ABC'
编辑 1:
这是下拉框更改时调用的jquery:
function onChange_ddLocation(arg) {
try {
$("#dropDownSource").val("Location");
document.forms[0].submit();
}
catch (ex) {
alert(ex.message);
}
}
【问题讨论】:
-
如何回传(或 Ajax)到 CustomerDashboard?你能发布客户端代码吗?
-
感谢 Win 的回复。当下拉列表更改时,我会提交一个简单的表单。我编辑了我的问题以包含代码。如果您对我有任何建议,请告诉我。
-
能把剩下的前端代码贴出来吗?
标签: c# model-view-controller razor kendo-ui telerik