2012-02-12 115 views
0

我正在渲染ajax请求,希望能够接收到部分视图。 而是我得到完全呈现的页面,包括页面布局,我不知道为什么渲染局部视图时出错

我的行动:

public PartialViewResult Menu(int? caseId) 
    { 
     if (caseId != null) 
     { 
      ViewBag.MenuId = caseId; 
     } 
     return PartialView("_MenuPartial", null); 
    } 

我的看法是使用jQuery AJAX

function loadMenu(id) { 
       $.ajax({ 
        data: "/Home/Menu?caseId=" + id, 
        success: function (data) { 
         alert(data); 
         $("#menucontainer").html(data); 
        } 
       }); 
      } 

渲染,最后我的看法是它被命名为“_MenuPartial”:

<ul id="menu"> 
    <li>@Html.ActionLink("Home", "Index", "Home")</li> 
    <li>@Html.ActionLink("About", "About", "Home")</li> 
    @if (@ViewBag.MenuId == 1 || @ViewBag.MenuId == 2) 
    { 
     <li>link @ViewBag.MenuId</li> 
    } 
</ul> 

任何想法为什么它的返回整页而不是局部视图?

+0

你在哪里/如何调用这个'loadMenu' javascript函数? – 2012-02-12 23:40:09

+2

你能像这样做@ ViewBag吗?你确定你的“完整页面”不是错误页面? – 2012-02-12 23:42:02

+0

@MattiVirkkunen:是的,你可以。该页面只是呈现整个页面,包括布局。 – cpoDesign 2012-02-13 08:26:31

回答

0

您的.ajax()调用看起来有点偏离。你应该使用“url”属性来调用你的控制器动作。这将是这个样子:

function loadMenu(id) { 
    $.ajax({ 
     url: "/Home/Menu?caseId=" + id, 
     success: function (data) { 
      $("#menucontainer").html(data); 
     } 
    }); 
} 

假设所有的文件都是在正确的文件夹,你应该得到你期待的结果。如果您需要将更复杂的数据类型传递给您的操作,则可以序列化JSON对象并将其发送到数据参数中。

+0

你是对的:) – cpoDesign 2012-02-13 08:20:45