рдлрд╝реЙрд░реНрдо рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреВрдЯрд╕реНрдЯреНрд░реИрдк-рдореЛрдбрд▓.рдЬреЗрдПрд╕ рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рдпрд╣ рдПрдХ рддреБрдЪреНрдЫ рдХрд╛рд░реНрдп рдкреНрд░рддреАрдд рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдХреБрдЫ рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдЖрдкрдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдлреИрд╕рд▓реЗ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░реВрдВрдЧрд╛, рдЕрдзрд┐рдХ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рдирд┐рд░реНрдгрдп рдФрд░ рд╕реНрд╡рд╕реНрде рдЖрд▓реЛрдЪрдирд╛ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред
рдорд╛рд▓ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдлреЙрд░реНрдо рдХреЗ рд╕рд╛рде рдПрдХ рдкреГрд╖реНрда рд╣реИред рдирд┐рд░реНрдорд╛рддрд╛рдУрдВ рдХреА рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рдПрдХ рдбреНрд░реЙрдк-рдбрд╛рдЙрди рд╕реВрдЪреА рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред рдЖрдЧреЗ рд╣рдо рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдЖрдЗрдХрди-рдкреНрд▓рд╕-рд╕рд┐рдВрдЧ рдЖрдЗрдХрди рд░рдЦрддреЗ рд╣реИрдВ, рдЬреЛ рдореЛрдбрд▓ рд╡рд┐рдВрдбреЛ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреНрд░рд┐рдЧрд░ рд╣реЛрдЧрд╛ред

<div id="edit_producer" class="modal fade hide in"> </div> <div class="editor-label"> @Html.LabelFor(model => model.Producers) </div> <div class="editor-field"> @Html.DropDownListFor(model => model.ProducerId, Model.Producers) @Ajax.RawActionLink( "<i class='icon-plus-sign icon-2x'></i>", ActionConstants.Edit, ProducerController.Name, null, new AjaxOptions { UpdateTargetId = "edit_producer", InsertionMode = InsertionMode.Replace, HttpMethod = "GET", OnSuccess = "ShowProducerEditModal" }, null) @Html.ValidationMessageFor(model => model.Producers) </div> </div>
рдиреЛрдЯ:
рдХрд╕реНрдЯрдо html рд╣реЗрд▓реНрдкрд░реНрд╕ DropDownListFor рдФрд░ RawActionLink рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЖрдЧреЗ рдмрдврд╝реЛред рд╣рдо OnSuccess рдЗрд╡реЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ js рд╣реИрдВрдбрд▓рд░ рд▓рд┐рдЦрддреЗ рд╣реИрдВред
function ShowProducerEditModal() { $('#edit_producer').modal('show'); }
рдЕрдЧрд▓рд╛, рд╣рдореЗрдВ modal window рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ProducerController рдореЗрдВ рдПрдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
[HttpGet] public ActionResult Edit(long? id) { ProducerEditModel model = service.GetProducerEditModel(id); return PartialView("ProducerEditPartial", model); }
рдореЛрдбрд▓ рд╡рд┐рдВрдбреЛ рд╕рд╛рдордЧреНрд░реА рдХреА рдЖрдВрд╢рд┐рдХ рдкреНрд░рд╕реНрддреБрддрд┐:
@using (Ajax.BeginForm( ActionConstants.Edit, ProducerController.Name, new AjaxOptions { HttpMethod = "POST", OnSuccess = "OnSuccess" })) { <div class="modal-header"> <a class="close" data-dismiss="modal">├Ч</a> <h3> </h3> </div> <div class="modal-body"> @Html.HiddenFor(model => model.Id) <div class="editor-label"> @Html.LabelFor(model => model.Name) </div> <div class="editor-field"> @Html.EditorFor(model => model.Name) @Html.ValidationMessageFor(model => model.Name) </div> </div> <div class="modal-footer"> <input type="submit" class="btn btn-success" value="" /> <a href="#" class="btn" data-dismiss="modal">Close</a> </div> }
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдореЗрдВ рдЯреНрд░рд┐рдЧрд░ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рдПрдХ рд╕реБрдВрджрд░ рдкреЙрдк-рдЕрдк рдорд┐рд▓рддрд╛ рд╣реИред

рдЕрдЧрд▓рд╛ рдКрдкрд░ рд╕рдВрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝реЙрд░реНрдо рдХреЛ рдорд╛рдиреНрдп рдХрд░рдиреЗ рдФрд░ рдбреНрд░реЙрдк-рдбрд╛рдЙрди рд╕реВрдЪреА рдореЗрдВ рдПрдХ рдирдпрд╛ рддрддреНрд╡ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо OnSuccess рдЗрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рд▓рд┐рдЦрддреЗ рд╣реИрдВред рд╣рдо рдбреНрд░реЙрдк-рдбрд╛рдЙрди рд╕реВрдЪреА рдЖрдЗрдЯрдо рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░реЗрдВрдЧреЗред рдпрджрд┐ рдлреЙрд░реНрдо рдХреА рд╕рд╛рдордЧреНрд░реА рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реИ, рддреЛ рдлрд┐рд░ рд╕реЗ рдореЛрдбрд▓ рд╡рд┐рдВрдбреЛ рдХреЗ рдЕрдВрджрд░ рдлреЙрд░реНрдо рдХреЛ рдбреНрд░рд╛ рдХрд░реЗрдВред
function OnSuccess(data) { if (data.isValid) { $('#edit_producer').modal('hide'); if (data.isNew) { AppendToDropDownList(data.name, data.id, 'ProducerId'); } else { EditDropDownListItem(data.name, data.id, 'ProducerId'); } } else { $('#edit_producer').html(data.partialView); } } function AppendToDropDownList(text, value, ddlId) { var newItem = $('<option/>', { value: value, text: text }); $('#' + ddlId).append(newItem); } function EditDropDownListItem(text, value, ddlId) { $('#' + ddlId + ' option[value="' + value + '"]').text(text).val(value); }
рдирд┐рд░реНрдорд╛рддрд╛ рдирд┐рдпрдВрддреНрд░рдХ рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ, рд╣рдо рдПрдХ рдФрд░ рдХрд╛рд░реНрд░рд╡рд╛рдИ рд▓рд┐рдЦрддреЗ рд╣реИрдВред
рдиреЛрдЯ: рдХрд╕реНрдЯрдо рд╕реНрдереИрддрд┐рдХ рд╡рд┐рдзрд┐ RenderRazorViewToString рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░
[HttpPost] public ActionResult Edit(ProducerEditModel model) { if (ModelState.IsValid) { bool isNew = model.Id == 0; long id = service.Save(model); return Json(new { isValid = true, id = id, name = model.Name, isNew = isNew }); } return Json(new { partialView = RenderUtils.RenderRazorViewToString(this, "ProducerEditPartial", model), isValid = false }); }

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрд╣ рд╕рдм рд╣реИред рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рдЙрдкрдпреЛрдЧреА рд▓рд┐рдВрдХ:
рд░реВрд╕реА рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдореИрдиреБрдЕрд▓рдмреВрдЯрд╕реНрдЯреНрд░реИрдк- modal.js рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓рд╕реВрддреНрд░ рдмреВрдЯрд╕реНрдЯреНрд░реИрдк-modal.js