У меня проблема с созданием «клонирования» данных на странице. Резюме состоит в том, что у меня есть экран создания рабочих мест клиентов и отдельный экран рабочих мест с клиентами. Оба они отлично работают. Мне нужно «клонировать» уже существующие данные о заданиях клиента, чтобы создать новый подобный набор заданий. Поэтому на моем экране управления у меня есть кнопка клонирования. Я хочу, чтобы это переместилось на мою страницу «создать» с данными, предварительно заполненными исходными данными, минус одна или две соответствующие идентифицирующие части информации, например. Название работы.Попытка загрузить данные в новое представление
Моя проблема заключается в том, что я не могу получить сообщение для перенаправления на страницу Создать с моими новыми данными в модели представления. Я не могу выполнить действие отправки, так как это сохраняет данные; данные, которые я клонирую, не будут сохраняться между экранами управления и создания.
Вот где я нахожусь:
В моей CSHTML:
<button type="button" name="btnClone" value="btnClone" id="btnClone" formaction="CloneJob" class="btn btn-primary" style="width: 150px;">Clone</button>
Это выстреливает событие щелчка, чтобы захватить текущий JobId, который затем выстреливает эту функцию:
function CloneJob(jobId) {
$.post('CloneJob', { JobId: jobId }, function (data) {
window.document(data);
});
}
В моем контроллере у меня есть:
[HttpPost]
public ActionResult CloneJob(Guid jobId) {
// logic which wipes off the old data job from the view model
// eg names, ids, etc. but leaves the actual job details intact
return View("CreateJob", manageJobViewModel);
Из этого можно видеть, что HTML возвращается в разделе отладки IE/Chrome, но он не будет отображаться в моем представлении CreateJob, заполненном данными.
Что мне не хватает?
В вашем контроллере комментарий кажется предположительным, что вы ожидаете иметь полностью заполненный JobViewModel, чего бы не было. Контроллеры не сохраняют информацию о состоянии между запросами, если вы не запрограммируете их для этого. Я думаю, что все, что вам нужно сделать, это создать JobModelView из базы данных с помощью jobId, с которым вы проходили. –
Логика, которую я оставил, действительно заполняет JobViewModel. Я просто хватаю модель просмотра сеанса, очищаю ее, и это то, что заканчивается как manageJobViewModel, который я хочу вернуть на экран CreateJobs. Я рад, что эта логика работает, поскольку я вижу, что это так, как должно быть, когда я отлаживаю. – JonSick
Если вы видите заполненный JobViewModel в отладчике до «return View», он должен * работать. Я никогда не видел синтаксис «window.document (...)» раньше. Я обычно «window.document.body.innerHtml =», но я бы загрузил только ту часть страницы, которая присутствует внутри тега body. Вы можете использовать веб-отладчик Fiddler, чтобы узнать, что именно отправляется в браузер. –