2012-01-20 52 views
1

我正在使用Telerik MVC Grid,並使用ajax綁定,並使用帶有編輯器模板的InCell編輯模式進行網格編輯。我想將模型傳遞給編輯。如何將模型傳遞給編輯器模板

我知道如果我使用了服務器綁定,可以將模型傳遞給編輯器模板。但我不確定Ajax綁定。

當您使用Ajax綁定時,是否可以將模型傳遞給編輯器模板?

+0

您能否詳細說明您想要傳遞的模型 – Tassadaque

+0

假設我想通過列表作爲編輯器模板中的下拉列表的模型 – adyusuf

回答

1

是的,你可以!它會自動完成。只要你的模板編輯器是一個列表框,你應該通過ViewBag.XXX屬性傳遞列表項。 這裏是ProductSelector.ascx編輯模板的一個例子:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<int>" %> 

<%Html.Telerik().ComboBox() 
     .Name(ViewData.TemplateInfo.GetFullHtmlFieldName(string.Empty)) 
     .AutoFill(true) 
      .BindTo(((IEnumerable<Aien.CRM.Biz.Entities.Product>)ViewBag.PossibleProducts).Select(option => new SelectListItem 
      { 
       Text = (option == null ? "(None)" : option.Title), 
       Value = option.Id.ToString() 
      })) 
     .OpenOnFocus(true) 
     .Render(); 

%> 

不要忘了把UiHint屬性的相關模型屬性。

+0

好主意,但是沒有其他方式可以傳遞模型到編輯器模板或直接從編輯器模板訪問它? – adyusuf

+0

將整個模型傳遞給編輯器模板?爲什麼?你可以將它傳遞給編輯器模板,就像你爲「int」所做的一樣。但是如果你這樣做了,你的編輯器模板應該是整個模型的編輯器,而不僅僅是它的一個屬性。 –

+0

另請參閱:http://stackoverflow.com/a/16065740/85269。我還想要一個方法,它涉及到能夠將模型對象直接傳遞給模板,例如「部分(...)」調用。但是,這個選項似乎並沒有被內置到MVC中,只剩下'ViewBag'作爲剩下的選項。 –

0

Telerik Mvc Grid的新功能叫做ForeignKey,它允許您對編輯器模板進行抽象並簡單地將其提供給SelectList(或IEnumerable)。 Here就是一個例子。

columns.ForeignKey(o => o.EmployeeID, (IEnumerable)ViewData["employees"], 
        "ID", "Name").Width(230); 

默認情況下,它使用下拉列表,您可以通過客戶端模板更改該列表。

相關問題