jquery загрузить частичное представление asp.net mvc - PullRequest
1 голос
/ 17 августа 2010

У меня есть несколько вкладок заголовка на базовой странице index.aspx, которая использует главную страницу.

вкладки заголовка правильно отображаются на странице индекса из viewusercontrol (<% Html.RenderPartial ("pvHeaderTabs")%>).проблема в том, что я пытаюсь загрузить другие частичные представления на страницу индекса без какой-либо удачи.кто-то может указать, что я делаю неправильно?

на главной странице я добавил следующий код js:

$(document).ready(function () {
    $('div.headertabs span').click(function () {
        var tabclass = $(this).attr('class')
        var tabid = $(this).children('a').attr('id')
        if (tabclass.indexOf("selected") == -1) {
            $(this).parent().children('.selected').removeClass('selected');
            $(this).addClass('selected');
            switch (tabid) {
                case "dashboard": $('#MainContent').load('<%= Html.RenderAction("ViewDashboard") %>');
                default: $('#MainContent').load('<%= Html.RenderAction("ViewDashboard") %>');
            }
        }
    });
});

HomeController.vb

Function ViewDashboard() As ActionResult
    Return PartialView()
End Function

Ответы [ 2 ]

0 голосов
/ 20 августа 2010

См. Также: Этот вопрос или Этот вопрос .Я использую это решение (также из SO где-то):

public class OfferController : Controller
{
    [HttpPost]
    public JsonResult EditForm(int Id)
    {
        var model = Mapper.Map<Offer, OfferEditModel>(_repo.GetOffer(Id));

        return Json(new { status = "ok", partial = this.RenderPartialViewToString("Edit", model) });
    }
}



public static partial class ControllerExtensions
{
    public static string RenderPartialViewToString(this ControllerBase controller, string partialPath, object model)
    {
        if (string.IsNullOrEmpty(partialPath))
            partialPath = controller.ControllerContext.RouteData.GetRequiredString("action");

        controller.ViewData.Model = model;

        using (StringWriter sw = new StringWriter())
        {
            ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(controller.ControllerContext, partialPath);
            ViewContext viewContext = new ViewContext(controller.ControllerContext, viewResult.View, controller.ViewData, controller.TempData, sw);
            // copy model state items to the html helper 
            foreach (var item in viewContext.Controller.ViewData.ModelState)
                if (!viewContext.ViewData.ModelState.Keys.Contains(item.Key))
                {
                    viewContext.ViewData.ModelState.Add(item);
                }


            viewResult.View.Render(viewContext, sw);

            return sw.GetStringBuilder().ToString();
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...