визуализировать страницу .ascx в страницу .aspx, используя javascript, jquery - PullRequest
1 голос
/ 30 ноября 2009

У меня есть страница 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, говорящую "объект ожидается" , пожалуйста, помогите мне решить эту проблему

Ответы [ 2 ]

2 голосов
/ 30 ноября 2009

Ваш вызов JavaScript совершит еще одно путешествие по конвейеру MVC. Таким образом, он попадет в маршрут, контроллер, а затем в представление. Ваш JavaScript не должен пытаться напрямую получить доступ к файлу ascx, а к маршруту, который сопоставляется с контроллером, который отображает представление.

Ваш JS должен выглядеть следующим образом (обратите внимание, что для этого используется относительный URL-адрес root, возможно, вам придется настроить):

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

Кроме того, вы можете использовать помощник HTML для получения URL, но JS должен быть в вашем представлении:

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

Этот URL попадет в действие Temp1 на TemplateController

public class TemplateController : Controller {
    public ViewResult Temp1() {
            return View("Temp1");
    }
}
0 голосов
/ 30 ноября 2009

Просто добавьте соответствующее действие к вашему контроллеру, чтобы вы могли использовать jQuery для его рендеринга:

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