1

ボタンクリックで呼び出される次のjs関数を持つaspxページがあります


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

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

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

my _Temp1.ascx ページが別のページをレンダリングする Temp1.ascx my _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 に答える