如何将模型传递到模板

本文关键字:模型 | 更新日期: 2023-09-27 18:34:43

我们一直在努力将值传递给以下模板:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MyCuteWeb.Areas.Admin.Models.DisplayType>" %>
<%= Html.Kendo()
.DropDownList()
.Name(ViewData.TemplateInfo.GetFullHtmlFieldName(string.Empty))
.DataTextField("Name")
.DataValueField("Value")
.DataSource(source => 
{ 
    source.Read(read => 
        read.Action("GetSelectedProperties",
            "UserQueryTypes", 
            new { id="3F2504E0-4F89-11D3-9A0C-0305E82C3301" })); 
})

%>

此模板调用 AJAX 服务以获取可能的下拉列表的列表,但AJAX服务必须接受将从 Kendo GridView 中的网格单元传递的参数。我们不确定如何传递此参数。

"3F2504E0-4F89-11D3-9A0C-0305E82C3301"单元格之间发生了变化,但我们不确定如何动态地将其传递给此模板。任何帮助将不胜感激。模板在单元格编辑器模板中指定,或通过[UIHint("....")]在宿主类中指定属性来指定

任何建议将不胜感激。

如何将模型传递到模板

它对我有用。

网格中的使用事件:

.Events(e => e.DataBound("On_DataBound"))   

这是我为事件提供的 js 函数:

function On_DataBound(e) {
    var data = e.sender._data;
    for (var i = 0; i < data.length; i++) {
        var kendoId = data[i].uid;
        var categoryId = data[i].UserQueryTypeID;
        $("#MainProp_" + categoryId).kendoDropDownList({
            dataTextField: "Name",
            dataValueField: "Value",
            autoBind: true,
            change: function(e) {
                var value = this.value();
                var catID = $(e.sender.element).attr("data-categoryID")
                $.post("/UserQueryTypes/SetKeyDetailField", { categoryId: catID, keyDetailField: value }, function (data) { if (data != "true") alert(data); });
            },
            dataSource: {
                transport: {
                    read: {
                        dataType: "json",
                        url: "/UserQueryTypes/GetSelectedProperties?categoryID=" + categoryId
                    }
                }
            }
        });
    }
}

在网格中使用模板:

col.Bound(b => b.UserQueryTypeID).ClientTemplate("<input id='"MainProp_#=UserQueryTypeID#'" data-categoryID='"#=UserQueryTypeID#'" />");

你的数据在客户端是动态变化的,这意味着你应该使用 javascript,这应该让你知道如何实现它:

<%= Html.Kendo()
.DropDownList()
.Name(ViewData.TemplateInfo.GetFullHtmlFieldName(string.Empty))
.DataTextField("Name")
.DataValueField("Value")
.DataSource(source => 
{ 
    source.Read(read => 
    read.Action("GetSelectedProperties","UserQueryTypes")).Data("getId"); 
})
%>
<script>
function getId() {
    return {
        id: $("#inputbox1").val() //replace $("#inputbox1").val() with code which get the proper id from grid.
    };
}
</script>

也检查此示例(级联下拉列表(。希望能解决您的问题。