使用javascript,jquery将.ascx页面渲染到.aspx页面

时间:2009-11-30 05:29:29

标签: asp.net javascript jquery asp.net-mvc partial

我有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运行时错误,指出“object expected” 请帮我解决这个问题

2 个答案:

答案 0 :(得分: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");
    }
}

答案 1 :(得分:0)

只需将适当的操作添加到控制器中,以便可以使用jQuery进行渲染:

public class TemplateController : Controller {
    public ViewResult Temp1() {
        return View("_Temp1")
    }
}