Рендеринг частичных представлений (модальные окна) в asp.net MVC - PullRequest
1 голос
/ 15 июня 2009

Извините за плохо сформулированный вопрос.

Я надеялся донести до всех идеи о том, как с этим справиться.

У меня есть ссылка на главной странице, которая ссылается на контактную форму. Если у пользователя включен javascript, я хочу открыть форму в модальном окне, используя jQuery. Если нет, пользователь будет просто перенаправлен на страницу контактной формы.

Проблема в том, что при открытии модального окна я хочу отображать только контактную форму - за исключением окружающего шаблона / главной страницы. Однако в случае, если JavaScript отключен, страница формы контакта должна отображаться вместе с шаблоном / главной страницей.

Каков наилучший способ реализации этого? В настоящее время моя единственная идея - использовать javascript для добавления строки значения / запроса к ссылке контактной формы, указывающей, что javascript включен. Например, http://www.mysite.com/contact/js или http://www.mysite.com/contact/?js=enabled. Если включен JavaScript, я могу частично отобразить контактную форму.

Я приветствую все идеи и ссылки.

Спасибо!

Ответы [ 2 ]

4 голосов
/ 15 июня 2009

Используйте это в вашем контроллере вместо:

if (Request.IsAjaxRequest())
{
    return PartialView("PartialViewWithYourForm");
}

return View("FullView");

FullView.aspx

...
<%= Html.RenderPartial("PartialViewWithYourForm") %>
...
3 голосов
/ 16 июня 2009

вы действительно можете сделать это красиво с jQuery!

Предположим, что ваша контактная форма на странице контактов обернута в div с id="myContactForm". Вы можете комбинировать селектор (например, '#myContactForm') с URL-адресом, с которого вы хотите загружать контент. Вы можете загрузить свою форму (или любой другой контент) непосредственно на текущую страницу несколькими различными способами. Лично я предпочитаю jqModal для своих потребностей в модальных окнах, но вы можете сделать это с помощью самого метода jQuery.load, если используете что-то еще.

Итак, если ваша первая страница называется «master.html», а ваша контактная форма называется «contact.html», вот что вы можете сделать внутри «master.html»:

<div id="someDiv">
  Please <a id="contactLink" href="contact.html">contact us</a> with
  any questions!
</div>
<div id="myModalPlaceholder">
  Modal content would go in here; this div is initially hidden.
</div>

Это, конечно, будет ссылка на контактную форму, если нет JavaScript. Но вы хотите извлечь только часть файла "contact.html" и отобразить его на главной странице. Вот идея о том, как вы достигаете своей цели на своей странице master.html:

<script type="text/javascript">
$(document).ready(function() {
    $('#contactLink').click(function() {
        $('#myModalPlaceholder').load('contact.html #myContactForm');
        return false; // cancel the native click event
    });
});
</script>

Обратите внимание на пробел, отделяющий URL-адрес в методе «load» от региона на целевой странице, которую вы только хотите захватить. Вы можете прочитать больше об этом здесь . Это будет захватывать #myContactForm div со страницы contact.html и вставлять его в #myModalPlaceHolder div вашей главной страницы.

Удачи!
-Mike

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...