如何在单击HTML按钮时呈现部分页面?

时间:2011-09-08 17:57:51

标签: jquery asp.net-mvc-3 renderpartial

我是MVC3.0的新手,必须使用jquery。我想知道有人可以帮助我如何在单击HTML按钮时呈现部分视图页面?

我知道这很简单,按钮可以称为“电子邮件”,它将用于名为“emailForm”的partialView。但我需要一些帮助。

2 个答案:

答案 0 :(得分:14)

您可以预先渲染页面,但在隐藏的div中,或者您可以在点击后使用AJAX加载它。

Hidden Div

<div style="display:none;" id="partial">
    @Html.Partial("SomePartial")
</div>

<button type="button" id="show-partial" />

和脚本

$('#show-partial').click(function(){
    $('#partial').show();
});

使用Ajax加载

要执行此操作,您需要在控制器中创建一个ActionResult,以呈现部分。

<div id="partial"></div>

<button type="button" id="load-partial" />

和脚本

$('#load-partial').click(function(){
    $('#partial').load('/TheController/TheAction/');
});

答案 1 :(得分:14)

如果可能的话,我会说@ smdrager的回答是理想的路线。但是,如果您需要从ajax请求中获取html,则有许多方法可以执行此操作...以下是一个示例:)

在您的模板中,您有一个按钮或链接,以及内容的div容器:

<a href="javascript:void(0)" id="emailTo">email to</a>
<div id="emailToContent"></div>

您需要一些快速的javascript来连接客户端功能:

<script type="text/javascript">
  $("#emailTo").click(function(){
    $.get("<url to partial>", function(data){$("#emailToContent").html(data);}
  });
</script>

然后,在您的控制器中,您需要一个返回部分的操作:

public ActionResult EmailTo()
{
  ...
  return PartialView("some partial")
}

确保传入javascript $.get调用的网址指向返回部分内容的操作。

这是一个非常基本的实现,如果你的情况变得更复杂(异常处理,参数传递等),它可能会变得更加复杂,但是当我需要一个简单的ajax请求来启动时,总​​体布局适用于我。