Простой способ сделать то, что вы хотите, это использовать partial view
. это ваш command grid
{
command:
{
text: "Exclude",
click: showExclude
},
title: " ",
width: 100
}
и вот ваша функция:
function showExclude(e) {
$(document.body).append('<div id="excludeWindow" class="k-rtl"></div>');
var dataItem = this.dataItem($(e.currentTarget).closest("tr"));
$('#excludeWindow').kendoWindow({
width: "80%",
title: 'excludeForm',
modal: true,
resizable: false,
content: "/YourController/GetPartial?id=" + dataItem.Id,
actions: [
"Close"
],
refresh: function () {
$("#excludeWindow").data('kendoWindow').center();
},
close: function() {
setTimeout(function () {
$('#excludeWindow').kendoWindow('destroy');
}, 200);
}
}).data('kendoWindow');
}
После нажатия на кнопку, вы загружаете свое окно (всплывающее окно) и вызываете действие, которое загружает partial view
для заполнения content
из window
. Вы можете передать все, что хотите, своему partial view
(например, здесь я просто отправляю Id
)
public ActionResult GetPartial(Guid id)
{
var viewModel= new ViewModelExclude
{
Id = id,
};
return PartialView("_exclude", viewModel);
}
, а partial view
выглядит примерно так:
@model ViewModelExclude
@using (Html.BeginForm("", "Your action", FormMethod.Post, new { id = "SendForm"}))
{
<input class="k-rtl" name="@nameof(Model.Id)" value="@Model.Id">
<button type="submit" class="btn btn-primary">Send</button>
}
а затем позвоните на Ваш ajax после нажатия на кнопку send
:
$("#SendForm").submit(function (e) {
e.preventDefault();
var form = $(this);
var formData = new FormData(this);
$.ajax({
type: "POST",
url: '@Url.Action("send", "yourController"),
data: formData,
contentType: false,
processData: false,
success: function (data) {
},
error: function (data) {
}
});
});
Ваше send
действие будет примерно таким:
[HttpPost]
public ActionResult Send(ViewModelExclude view)
{
....
return Json();
}