对于措辞不好的问题,我们深表歉意。
我希望得到每个人关于处理这个问题的最佳方法的想法。
我在母版页上有链接到联系表单的链接。如果用户启用了javascript,我想使用jQuery打开一个模式窗口。如果没有,用户将被定向到联系表单页面。
问题是,在提供模态窗口时,我只想显示联系表单 - 减去周围的模板/母版页。但是,在禁用javascript的情况下,联系表单页面应与模板/母版页一起显示。
实现此目的的最佳方法是什么?目前,我唯一的想法是使用javascript将值/查询字符串附加到联系表单链接,表明已启用javascript。例如,http://www.mysite.com/contact/js或http://www.mysite.com/contact/?js=enabled。如果启用了javascript,我可以部分呈现联系表单。
我欢迎所有的想法和链接。
谢谢!
答案 0 :(得分:4)
在控制器中使用此功能:
if (Request.IsAjaxRequest())
{
return PartialView("PartialViewWithYourForm");
}
return View("FullView");
FullView.aspx
...
<%= Html.RenderPartial("PartialViewWithYourForm") %>
...
答案 1 :(得分:3)
你确实可以用jQuery很好地做到这一点!
假设您的联系信息页上的联系表单包含在id="myContactForm"
的div中。您可以将选择器(例如'#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>
请注意,“load”方法中的URL与您只想抓取的目标页面上的区域之间存在一个空格。您可以阅读有关此here的更多信息。这将从#myContactForm
页面抓取contact.html
div,并将其插入到母版页的#myModalPlaceHolder
div中。