0

$("#myChildTabName").load("./MyController/MyMethod/" + myParameter); を使用するように変換するにはどうすればよい @url.Actionですか? MyMethodPartialView を返します。基本的に、タブをクリックすると部分ビューをロードしたいと思います。

以下のように更新: 以下の解決策を見つけましたがapplicationID、現在のコンテキストには存在しないというエラーが表示されます。jQuery 呼び出しのすぐ上にアラートが表示されますapplicationID

//The below code DOES NOT work.

function LoadTabContents(applicationID)
{
        $("#currentTab").load('@Url.Action("TabMethod", "MyController", new { @id = applicationID })')
}

//The below code works fine.

function LoadTabContents(applicationID)
{
        $("#currentTab").load('@Url.Action("TabMethod", "MyController", new { @id = 123})')
}
4

4 に答える 4

4

残念ながら、あなたがやろうとしていることは、すべて Razor で行うことはできません。クライアントのみが実際の値を知っているため、applicationID はクライアント側で追加する必要があります。次のようなことを試すことができます:

function LoadTabContents(applicationID) {
    $("#currentTab").load('@Url.Action("TabMethod", "MyController")' + '/'+ applicationID);
}

URL.Action は正しいパスを生成し、残りは JavaScript 関数にフェーズ化されたパラメーターを追加します。URL.actionがスラッシュを追加するかどうか思い出せないので、スラッシュをいじる必要があります...

于 2012-09-24T20:32:37.043 に答える
1

@Url.Action- サーバー コードです。Razor ビューでのみ使用できます。この質問を見てくださいASP.NET MVC Url.Action in JQuery が認識されない

于 2012-09-24T19:57:37.670 に答える
0

1。この場合、部分的なメソッドを使用しないでください。リクエストを介してデータをロードする場合は、部分的なビューではなく、return View()を使用する必要があります。ただし、ビューにHTMLを追加する場合は、partialを使用する必要があります。この場合、partialはメインビューの一部を意味します。

メインレイアウトの使用を避けたい場合-プロパティを設定しますlayout=string.Empty

2。メソッドでロードしてPOSTのように使用できますが、この場合load()GETリクエストであるため使用できません。$.POSTまたは$.Ajax

 public ActionResult Index()
        {
            if (Request.IsAjaxRequest())

                return PartialView("partialView");
            else
                return View();
        }
  1. メソッドタイプに基づくパーシャルvsビューの単純なオプションは、次のようにレイアウトを設定します。

@{レイアウト=Request.IsAjaxRequest()?null: "〜/ Views / Shared / _Layout.cshtml"; }

于 2012-09-24T19:08:22.390 に答える
0

この解決策はあなたのために働くかもしれません

$("#currentTab").load('@Url.Action("TabMethod", "MyController", new { @id = "[APPLICATION_ID]"}).replace("[APPLICATION_ID]",applicationID)')
于 2012-09-24T20:42:03.333 に答える