Asp.net mvc 3 如何在弹出窗口中将对象从视图传递到局部视图?
我有一个包含Telerik网格的视图: Index.cshtml Index.cshtmlAsp.net mvc 3 如何在弹出窗口中将对象从视图传递到局部视图?,asp.net-mvc-3,partial-views,telerik-grid,telerik-mvc,telerik-window,Asp.net Mvc 3,Partial Views,Telerik Grid,Telerik Mvc,Telerik Window,我有一个包含Telerik网格的视图: Index.cshtml Index.cshtml 功能完成(e){ 如果(例如,名称==“编辑客户”){ var detailWindow=$(“#Window”).data(“tWindow”); var客户=e.response.customer; detailWindow.center().open(); } } 如何将此“customer”对象传递到弹出窗口内的部分视图?我们处理此问题的方法是在Telerik窗口中创建一个空div。“编辑”
功能完成(e){
如果(例如,名称==“编辑客户”){
var detailWindow=$(“#Window”).data(“tWindow”);
var客户=e.response.customer;
detailWindow.center().open();
}
}
如何将此“customer”对象传递到弹出窗口内的部分视图?我们处理此问题的方法是在Telerik窗口中创建一个空div。“编辑”链接是一个AJAX链接,它使用窗口的div作为目标。该链接调用您选择的控制器方法,并从那里返回您想要显示的PartialView,而不是返回Json。这种方法的好处是,您可以像使用任何普通视图/局部视图一样使用customer对象 AJAX完成后,打开Telerik窗口,内容应该在那里
@(Html.Telerik().Grid(Model)
.Name("Grid")
.DataKeys(keys => keys.Add(c => c.CustomerID))
.ToolBar(toolBar => toolBar.Template(
@<text>
<button id="feedback-open-button" title="Add Customer" class="t-button t-state-default">Add</button>
</text>))
.Columns(columns =>
{
columns.AutoGenerate(column =>
{
//customize autogenereted column's settings
column.Width = "150px";
if (column.Member == "CustomerID")
column.Visible = false;
});
columns.Command(commands => commands
.Custom("editCustomer")
.Text("Edit")
.DataRouteValues(route => route.Add(o => o.CustomerID).RouteKey("CustomerID"))
.Ajax(true)
.Action("EditCustomer", "Grid"))
.HtmlAttributes(new { style = "text-align: center" })
.Width(150);
})
)
@{ Html.Telerik().Window()
.Name("Window")
.Title("Add / Edit Customer")
.Content(@<text>
@Html.Partial("AddEditCustomer", new Customer());
</text>)
.Width(400)
.Draggable(true)
.Modal(true)
.Visible(false)
.Render();
}
@{ Html.Telerik().ScriptRegistrar()
.OnDocumentReady(@<text>
// open the initially hidden window when the button is clicked
$('#feedback-open-button')
.click(function(e) {
e.preventDefault();
$('#Window').data('tWindow').center().open();
});
</text>);
}
public JsonResult EditCustomer(int CustomerID)
{
var model = CustomerModel._CustomerCollection.FirstOrDefault(o => o.CustomerID == CustomerID);
return Json(new { customer = model });
}
<script type="text/javascript">
function onComplete(e) {
if (e.name == "editCustomer") {
var detailWindow = $("#Window").data("tWindow");
var customer = e.response.customer;
detailWindow.center().open();
}
}
</script>