При отправке формы браузер отправляет запрос HTTP Post на сервер. Затем браузер отображает полезную нагрузку Ответа. Ваше действие Controller возвращает PartialView, который браузер успешно отображает (даже если он не имеет тегов html, head или body, необходимых для того, чтобы сделать его действительно действительным HTML).
Звучит так, будто вы хотите, чтобы браузер сохранял большую часть вашей страницы загруженным и отображенным, разместил форму, затем взял полученный HTML-код и заменил только часть загруженной страницы. Проще говоря, браузер не достаточно умен, чтобы сделать это.
Что вы, вероятно, хотите сделать, это что-то вроде этого:
- Пользователь заполняет некоторые данные формы и нажимает кнопку сохранить / отправить / перейти / что угодно.
- Однако вы не хотите, чтобы браузер отправлял форму, потому что она не сохранит большую часть текущей страницы так, как вы хотите.
- Вместо этого вы хотите, чтобы кнопка «Отправить» вызывала некоторый локальный JavaScript.
- Этот локальный JS должен связать введенные пользователем данные формы, создать POST с этими данными в качестве полезной нагрузки и отправить POST, используя Ajax. Это сохранит текущую страницу загруженной, в то время как запрос ajax попадает в действие вашего контроллера
- Действие вашего контроллера остается неизменным и возвращает частичное представление.
- Ваша JS-функция, которая запустила Ajax-вызов, также должна определять функцию «success», которая будет вызываться после завершения операции.
- В рамках этой функции успеха ваш javascript будет извлекать HTML-код из ответа и использовать его для замены области страницы, в которой находилась исходная форма.
Я настоятельно рекомендую jQuery - он НАМНОГО упростит создание запроса Ajax, обработку обратного вызова success и замену только части загруженной в данный момент страницы результатом. Насколько я понимаю, «ненавязчивый javascript» от MS также может помочь реализовать это, однако у меня нет прямого опыта с этим.
Очевидно, что все это будет работать только в том случае, если в браузере включена поддержка JavaScript.