1

ASP.Net MVC アプリケーションがあります。データをアクションに投稿してから、出力をレンダリングしようとしています。製品を表示できるページがあるので、www.mysite.com/product/details/1 に製品が表示されます。このページでは、いくつかの価格設定ロジックを含む RenderAction() を介して部分ビューをレンダリングします。ユーザーにいくつかのオプションを選択してもらい、jquery にオプションを投稿して新しい価格を取得してもらいます。

しかし、私が電話するとき

$.post({
  url : "price/getprice",
  data : {"options" : chosenOptions},
  success : function(data) {
              $("#price").text(data);
            }
});

www.mysite.com/product/details/price/getprice存在しないURLに投稿しています。「~/price/getprice/」に投稿してみましたが同じです。PriceController の GetPrice(FormCollection form) アクションに移動しないのはなぜですか??

これは に投稿する必要がありwww.mysite.com/price/getpriceます。firebug の [ネット] タブを見ると、次のように投稿されています。

http://localhost:42427/Product/Details/%5Bobject%20Object%5D

Firebug の応答を見ると、アプリケーションは例外をスローしています。

パラメーター ディクショナリには、'PrintPlaceWebsite.Controllers.ProductController' のメソッド 'System.Web.Mvc.ActionResult Details(Int32)' の null 非許容型 'System.Int32' のパラメーター 'id' の null エントリが含まれています。

しかし、私はその場所に投稿しようとしているわけではないので...うーん。

4

5 に答える 5

5

相対 URL を指定したので、このコードが sitewww.mysite.com/a/b/cにある場合、URL は を指します/a/b/price/getprice

おそらく絶対 URL を指定したいでしょう:

$.post({
  url : "/price/getprice",
  //     ^-- leading slash
  data : {"options" : chosenOptions},
  success : function(data) {
              $("#price").text(data);
            }
});
于 2010-07-22T19:44:41.957 に答える
0

JQuery が知る限り、現在の場所 (www.mysite.com/product/details/) に基づいて AJAX 呼び出しを行っています。「myPage.html」へのリンクがあるかのように、www.mysite.com/product/details/myPage.html に移動しようとします。

ビューの URL を次のように解決することをお勧めします。

<% = ResolveUrl("~/price/getprice") %>
于 2010-07-22T19:49:27.477 に答える
0

URL ルーターが混乱しているようです。パスを絶対 (完全) パスに置き換えるだけです。

$.post({
  url : "http://mywesbite.com/price/getprice",
  data : {"options" : chosenOptions},
  success : function(data) {
          $("#price").text(data);
        }
});
于 2010-07-22T19:56:29.933 に答える
0

だから、それは私の側の小さなタイプミスであることがわかりました(あなたがすべてそれをコピーしたので、他のみんなのタイプミスです)。

繰り返します:

$.post({
  url : "/price/getprice",
  data : {"options" : chosenOptions},  <<<<< Right here. dang.
  success : function(data) {
          $("#price").text(data);
        }
});

あなた見えますか?

$.post({
  url : "/price/getprice",
  data : { options : chosenOptions},  <<<<< no quotes. arg.
  success : function(data) {
          $("#price").text(data);
        }
});
于 2010-07-22T20:19:25.617 に答える
0

私のために働いたものは次のとおりです。

ビューで:追加

<span data-url="@Url.Content("~/ControllerName/ActionName")" id="getValues" class="hidden"></span>

注: 必ずスラッシュ ('/') を使用してください

Jqueryファイルで、

var getValues = $('span#getValues').attr('data-url');

Ajax 呼び出しで、設定

 $.ajax({
            type: 'GET',
            url: getValues,
            data: { id: abc},
            cache: false,
            success: function(result) {
             }
       }); 
于 2016-09-23T16:35:43.367 に答える