我有一个视图模板,可以显示来自kendo.observable viewmodel的数据。 但是,作为视图模板的一部分,我想渲染一个接受参数的局部视图。如何将参数传递给操作?
在下面的例子中,
<div data-bind="text: data.name"></div>
的工作原理。现在,我如何将data.name传递给
@Html.Action("_Discounts", "GroupBuys", new { name = data.name })
//查看模板,它是数据绑定到viewmodel
<script id="details-template" type="text/x-kendo-template">
<div class="details">
<div class="info-container">
<div data-bind="text: data.name"></div>
<div data-bind="text: data.description"></div>
${data.name} //This by itself works
@Html.Action("_Discounts", "GroupBuys", new { name = ${data.name} }) //Doesn't work
</div>
</div>
</script>
//控制器动作接受参数“名称”
public ActionResult _FindName(string name)
{
...
}
我试过了:
@Html.Action("_Discounts", "GroupBuys", new { name = @:data.name })
@Html.Action("_Discounts", "GroupBuys", new { name = @:"${data.name}" })
@Html.Action("_Discounts", "GroupBuys", new { name = ${data.name} })
似乎无效。任何帮助将不胜感激。
答案 0 :(得分:1)
@Html.Action("_Discounts", "GroupBuys", new { name = ${data.name} })
请记住这是服务器端代码。它将在kendo JavaScript开始在浏览器中运行之前在页面上呈现,因此此时您的kendo.observable viewmodel不存在。
即使您使用Kendo MVC绑定,他们也会在页面上呈现JavaScript。
我的建议是为你的部分做一个Ajax调用,并且在ajax的成功中使用返回的HTML返回你的模板。
$.ajax({
url: 'YourURL',
data: { name: "name" },
dataType: 'html',
success: function (html) {
$("#selectDivForReturnedHtmlInKendoTemplate").replace(html);
var template = kendo.template($('#details-template'));
renderTemplate(template);
},
error: function (e) {
ajaxError(e);
}
});