2013-09-22 2 views
1

У меня есть частичный вид. Мне нужна загрузка в div при загрузке страницы. Кто-нибудь знает, как я могу это сделать, я уверен, что ее нужно загружать через Ajax, а не только как @ Html.Partial.Ajax Injected Partial View - Javascript/JQuery placement

У меня есть DIV, что я загрузить почти все содержимое на всем сайте, и хотели бы иметь возможность загружать только этот частичный вид на странице загрузки, остальная часть моего сайта использует Ajax.ActionLink для выполнения:

<div id="placeholder""></div> 

Это был действительно долгий день, я почти уверен, что сейчас просто веду.

Ваша помощь приветствуется.

Спасибо,

Все

+0

Возможные duplicate: http://stackoverflow.com/questions/3992789/how-can-i-render-a-partial-view-via-ajax?rq=1 –

+0

Это именно то, что вам нужно: http://stackoverflow.com/вопросы/1570127/рендер-частичные показы используя-JQuery-в-Asp-нетто-MVC –

ответ

-2

Если вы используете JQuery вы могли бы сделать что-то вроде этого:

$('#foo').load('path/to/your/partial/file'); 
0

им вполне уверен, что он должен загружаться с помощью Ajax, а не только как @ Html.Partial.

Я немного недопонял, с какими трудностями в этом? Вы просто обратитесь к частичному метод контроллера через AJAX и поместить полученные данные в контроллер, например:

Клиент:

<script src="http://code.jquery.com/jquery-1.10.2.min.js" ></script> 
<script> 
    $(function() { 
     $.ajax({ 
      url: "/Home/MyPartial", 
      success: function(data) { 
       $("#placeholder").html(data); 
      } 
     }); 
    }); 
</script> 

<div id="placeholder"></div> 

Контроллер:

public ActionResult MyPartial() 
    { 
     return PartialView(); 
    } 

MyPartial.cshtml :

<div>my partial</div> 
2

Вы можете сделать это следующим образом:

В document.ready() называют ваш Action который будет возвращать ваш частичный вид в виде строки, а затем вы можете заменить этот результат, используя replace() в JQuery:

Ajax вызова:

$(document).ready(function() { 
    $.ajax({ 
     url: "/ControllerName/ActionName", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function(data) { 
      $("#placeholder").replaceWith(data); 
     } 
    }); 
}); 

контроллер:

[HttpPost] 
    public JsonResult ActionName(ModelType model) 
    { 
     ...... 
     return Json((RenderRazorViewToString("PartialViewName", model)), JsonRequestBehavior.AllowGet); 
    } 

    [NonAction] 
    public string RenderRazorViewToString(string viewName, object model) 
    { 
     ViewData.Model = model; 
     using (var sw = new StringWriter()) 
     { 
      var viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, viewName); 
      var viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw); 
      viewResult.View.Render(viewContext, sw); 
      viewResult.ViewEngine.ReleaseView(ControllerContext, viewResult.View); 
      return sw.GetStringBuilder().ToString(); 
     } 
    }