ASP.Net c# - Kendo网格 - ValueObject与UIHint < - 需要动态

问题描述:

我对ASP.Net,C#和剑道的土地有点新。ASP.Net c# - Kendo网格 - ValueObject与UIHint < - 需要动态

我需要一些东西来代替UIHint("someEditorTemplate")来取动态值。我们使用这些UIHints主要是为了做一个KendoDropDown来显示一个选择来填充表单中的一个字段。

我工作的应用程序有指定查看对象KendoGrids:

<% 
     Html.Kendo().Grid<NoiNlsConsignmentVO>() 
      .Name("grdSubSpecies") 
      .ToolBar(...) 
      .DataSource(ds => ds 
        ... 
        .Read(r => r.Action("GridSelectSubSpecies", "RefData").Data("getSelectedSpecies")) 
      ... 
      .Editable(e => e.Mode(Kendo.Mvc.UI.GridEditMode.PopUp)) 
      .Render() %> 

而且NoiNlsConsignmentVO如下。由于网格上的可编辑属性,会弹出一个对话框,允许创建/编辑VO中指定的字段。

namespace Daff.Lae.TraceCommon.ValueObjects 
{ 
    [DataContract] 
    [Serializable] 
    public class NoiNlsConsignmentVO: BaseTraceVO 
    { 
     [DataMember, ScaffoldColumn(false)] 
     public Int32 NoiId { get; set; } 

     [DataMember, Required, Display(Name = "Breed", Order = 1)] 
     public String BreedCode { get; set; } 

     [DataMember, Display(Name = "Description")] 
     public String Description { get; set; } 

     [DataMember, UIHint("NlsSubSpecies", null, "NoiId", NoiId)] 
     public String Species{ get; set; } 
     ... 

而我想要的是用于UIHint(“种”),从这个VO采取NoiId的动态值。你看我已经尝试过了。

然而,这并不工作,从我读过的UIHints只能采取静态值。

我可以使用什么机制来实现这一点,以便我可以传递NoiId的值?

+0

我相信我们作为ViewObjects(VO)有ASP.NET MVC 2模板。我发现http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-1-introduction.html这可能会导致我想要实现的目标... – HankCa

我以错误的方式思考它。当你使用那些在底层有很多魔力的框架时,经常发生这种情况。

我通过在UIHint(the_template)中指定的.Data(javascript_function)加到the_template来修复它。 The_Template是NlsSubSpecies.ascx

<%: 
    Html.Kendo().DropDownList().Name("ddlNlsSubSpecies") 
      .DataTextField("Text") 
      .DataValueField("Value") 
      .DataSource(source => 
      { 
       source.Read(read => 
       { 
        read.Action("GetNLSSubSpecies", "RefData").Data("getSpecies"); 
       }); 
      }) 
      .Events(ev => ev.DataBound("setDefaultValue")) 
%> 

,并在相关.ascx文件:

<script type="text/javascript"> 
    function getSpecies() { 
     let species = { species: '<%=Model.SpeciesCode%>' }; 
     return species; 
    } 
</script> 

而在RefDataController.cs

public JsonResult GetNLSSubSpecies(String species) 
{ 
    ... 

最后(或首先),(中)的ViewObject /模板:

[DataMember, UIHint("NlsSubSpecies")] 
public String Species{ get; set; }