使用jQuery重新加载MVC2用户控件

时间:2010-12-21 20:28:40

标签: asp.net-mvc-2 jquery

我知道我今天有很多问题,但仍然试图控制一切,学习MVC 2正确的方式。在我提出这个问题之前,我已经尝试了提供的解决方案here但是我收到了500个内部服务器错误。

所以这就是我要做的事情,我让用户能够从技能列表中选择(在ListView用户控件中加载)或者在列表中添加一个新的并选择它。添加新的完成(使用WCF服务和jQuery)但现在我正在尝试重新加载技能用户控件。

根据我链接的解决方案,我向我的AccountController添加了一个动作

public ActionResult GetSkillControl()
{
    return View("~/Views/Shared/SkillsListView.ascx");
}

我有一个跨度内的控件(所以它有一个容器)

<tr>
    <td style="vertical-align:top;"><label for="SkillsListView" title="Skills">Skills:</label></td>
    <td class="regElements"><span id="SkillListViewContainer"> <% Html.RenderPartial("SkillsListView"); %></span><%= Html.ValidationMessageFor(m => m.Skills, "*")%><br />
    <span id="AddSkillError"></span>
    Add: <input type="text" id="NewSkill" class="inputbox" style="width:75px;" />&nbsp;<input type="button" value="Add" id="AddSkill" name="AddSkill" /></td>
    <td></td>
</tr>    

在我的jQuery ajax调用中我有

success: function () {
    $('#SkillListViewContainer').load('../AccountController/GetSkillControl');
}

当它达到这一点时,Chrome中的JavaScript控制台显示它返回500内部服务器错误。我在这里缺少什么?

1 个答案:

答案 0 :(得分:4)

根据ASP.NET MVC中的标准路由,尝试“/ Account / GetSkillControl”。您在jQuery的加载方法中使用的任何内容都必须是有效的URL。路由引擎正在查找或是Account而不是AccountController。此外,通过使用前导“/”,它将从站点的根目录解析。