我有一个 ASP.NET 的MVC3视图,它有一个Telerik Grid,它使用视图模型作为其数据。
其中一个要求是我们需要在其中一个网格列中选择一个下拉列表控件,该控件从查找表中获取数据。
作为MVC3的新手,我认为由于Razor View只能使用一个模型指令IE:
@model IEnumerable<MarketingWebsiteTools.Models.EditableItemInfo>
下拉查找值需要与网格的数据一起映射回 ViewModel。
在这一点上,提到我正在使用Html.Telerik((可能是相关的。ComboBox(( 在 ClientTemplate 中,如下所示:
.Columns(columns =>
{
columns.Bound(o => o.ItemNmbr).Width(65);//.ClientTemplate("<label name='ProductIdentifier' />");
columns.Bound(o => o.Description).Width(65)
.ClientTemplate(Html.Telerik().ComboBox()
.Name("Special")
**.BindTo(new SelectList())**
.ToHtmlString());
columns.Bound(o => o.Start_Date).Width(75).Format("{0:d}");
columns.Bound(o => o.End_Date).Width(75).Format("{0:d}");
columns.Bound(o => o.PromotionText).Width(75);
columns.Command(commands => commands.Delete()).Width(125).Title("Delete");
})
我的问题是:关于 BindTo(new SelectList(((,我需要提供一个类型为 System.Collections.Generic.IEnumerable 的参数,但是我不确定如何从我的视图模型中获取它,或者也许,我应该以另一种方式获取该查找数据......
我看了这个例子:http://www.telerik.com/community/forums/aspnet-mvc/combobox/bindto.aspx
但是,我的代码或智能感知似乎无法识别任何模型IE: .绑定到(新选择列表(模型((
我还看了这个例子:如何在 Telerik 网格中插入下拉列表框
看起来控制器中有一个对方法的调用,但同样,无法访问该控制器。
提前感谢您的任何帮助。
道格
使用模板可以非常轻松地做到这一点。从控制器只需使用 TempData 或 ViewBag 将数据传递到视图。
@{
List<AdjustmentReasonCodes> salesAuditReasons = new List<AdjustmentReasonCodes>();
salesAuditReasons = (List<AdjustmentReasonCodes>)TempData["SalesAuditReason"];
}
column.Template(@<select id="@("ddlSalesAuditReason" + @item.CustCode.Replace(" ", "").Replace("-", "").Trim())" class="DropDown">
<option value="0">--Select--</option>
@foreach (AdjustmentReasonCodes adrc in salesAuditReasons)
{
if (item.RefReasonForAuditAdjustment == adrc.ReasonCode)
{
<option value="@(adrc.ReasonCode)" selected="selected">@adrc.ReasonDescription</option>
}
else
{
<option value="@(adrc.ReasonCode)">@adrc.ReasonDescription</option>
}
}
</select>).Title("Audit Reason").Width(135);