我有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” 请帮我解决这个问题
答案 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")
}
}