我有一个 View 模板,它能够显示来自 kendo.observable View 模型的数据。 但是,作为 View 模板的一部分,我想呈现一个接受参数的局部 View 。如何将参数传递给操作?
在下面的例子中,
<div data-bind="text: data.name"></div>
有效。现在,如何将 data.name 传递给
@Html.Action("_Discounts", "GroupBuys", new { name = data.name })
//数据绑定(bind)到viewmodel的View Template
<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>
// Controller Action 接受参数“名称”
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} })
似乎没有一个有效。任何帮助将不胜感激。
最佳答案
@Html.Action("_Discounts", "GroupBuys", new { name = ${data.name} })
请记住这是服务器端代码。它将在 kendo JavaScript 开始在浏览器中运行之前呈现在页面上,因此此时您的 kendo.observable View 模型不存在。
即使您使用 Kendo MVC 绑定(bind)也是如此,因为它们所做的只是在页面上呈现 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);
}
});
关于c# - ASP .NET MVC KendoUI,如何将可观察的 viewModel 属性传递给 MVC Action?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24413441/