1

我有 aspx 页面,它具有以下 js 函数,在按钮单击时调用


<input type="button" onclick="calltemp1()" value="Temp1"/>

    <script type="text/javascript">
        function calltemp1() {

          $("#Renderthisdiv").load("/Views/Templates/_Temp1.ascx");
         }             
    </script>

我的 _Temp1.ascx 页面呈现另一个页面 Temp1.ascx 我的 _Temp1.ascx 包含

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>

<div>
<%Html.RenderPartial("/Views/Templates/Temp1.ascx"); %>
</div>

当我运行程序时,我收到 JavaScript 运行时错误,提示“预期对象” ,请帮我解决这个问题

4

2 回答 2

2

您的 JavaScript 调用将再次通过 MVC 管道。所以它会命中路由、控制器,然后是视图。您的 JavaScript 不应尝试直接访问 ascx 文件,而是映射到呈现视图的控制器的路由。

您的 JS 应该如下所示(注意这是使用根相对 URL,您可能需要调整):

$("#Renderthisdiv").load("/template/temp1");

或者,您可以使用 HTML 帮助程序来获取 URL,但 JS 必须在您的视图中:

$("#Renderthisdiv").load("<%= Html.Action("temp1", "template") %>");

该 URL 将命中 TemplateController 上的 Temp1 操作

public class TemplateController : Controller {
    public ViewResult Temp1() {
            return View("Temp1");
    }
}
于 2009-11-30T08:09:32.260 回答
0

只需将适当的操作添加到您的控制器,以便您可以使用 jQuery 来呈现它:

public class TemplateController : Controller {
    public ViewResult Temp1() {
        return View("_Temp1")
    }
}
于 2009-11-30T05:39:12.720 回答