在ASP.NET MVC 3中显示动态内容

时间:2011-09-28 22:03:07

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

我有以下结构:

  1. 的Site.Master

  2. 主页 - 查看

  3. HomeController - Controller

  4. 在Site.Master中,我有一个包含多个ActionLink的标题,其中一个是常见问题解答。在Home视图中,我有基本上显示静态内容的HTML,但是,在中心窗格/ div中,我希望根据用户点击的某些HTML.ActionLinks获得动态内容。所以,例如,最初,我希望中心DIV显示一个介绍 - 但如果用户点击我的Faq ActionLink,我希望中心DIV显示特定于我的Faq的内容。

    在HomeController中,我有以下内容:

    [HttpGet]
        public ActionResult Intro()
        {
            var introRequest = _gatewayService.GetContent(new GetContentRequest { Content = ContentTypes.Introduction });
    
            ViewData["content"] = introRequest.Result;
    
            return View();
        }
    
     [HttpGet]
        public ActionResult Faq()
        {
            var faqRequest = _gatewayService.GetContent(new GetContentRequest { Content = ContentTypes.Faq });
    
            ViewData["content"] = faqRequest.Result;
    
            return View();
        }
    

    想法是Faq的动作链接看起来像:

    <%= Html.ActionLink("Faq","Faq","Home") %> 
    

2 个答案:

答案 0 :(得分:1)

正如@Valamas所说,使用Ajax.ActionLink。例如,
在标记中:

<div id=”faqContent”>
   @Ajax.ActionLink(“Click here to see FAQ!”,
      “Faq”,
      new AjaxOptions{
         UpdateTargetId=”faqContent”,
         InsertionMode=InsertionMode.Replace,
         HttpMethod=”GET”
      })
</div>

在控制器中:

public ActionResult Faq()
{
    var faqRequest = _gatewayService.GetContent(new GetContentRequest { Content = ContentTypes.Faq });

    return PartialView("Faq", faqRequest.Result);
}

最后部分查看Faq.chtml,其中包含常见问题解答的html。

答案 1 :(得分:0)

首先,你需要在控制器中更改动作方法的结果,而不是动作结果你可以使用jsonresult 其次,在视图中,您可以使用jquery加载动态内容