Отображение динамического содержимого в ASP.NET MVC 3

#asp.net-mvc #asp.net-mvc-3

#asp.net-mvc #asp.net-mvc-3

Вопрос:

У меня следующая структура:

  1. Сайт.Мастер

  2. Главная страница — Просмотр

  3. HomeController — контроллер

На сайте.Мастер У меня есть заголовок, который содержит несколько ссылок на действия, одна из которых является Faq. В главном окне у меня есть 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.Resu<

        return View();
    }

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

        ViewData["content"] = faqRequest.Resu<

        return View();
    }
  

Идея заключалась бы в том, что ссылка на действие для Faq будет выглядеть примерно так:

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

Ответ №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 для FAQ.

Ответ №2:

Во-первых, вам нужно будет изменить результат ваших методов действий в вашем контроллере, вместо actionresult вы можете использовать jsonresult Во-вторых, в представлении вы можете использовать jquery для загрузки динамического содержимого