jQueryを使用して同じプロジェクト内のWebApiコントローラーを呼び出すASP.NETMVC4アプリケーションがあります。コントローラにIDを渡すと/MyController/123
、ページが読み込まれたときに異なるデータが表示されます。問題は、そのIDをjQueryに渡す方法がわからないことです。それ自体はクエリ文字列パラメータではないため、これは機能しません。私が欲しいのはURLからの「123」です。URLを切り刻む以外に、これを行うための一般的/標準的な方法はありますか?
2 に答える
1
コントローラーのViewBagオブジェクトに配置し、ViewBag.PassedId = Idにしてから、フロントエンドでカミソリまたはビューエンジンメソッドを使用してjavascript変数に配置できます。
<script>
var id = @(ViewBag.PassedId);
</script>
または、非表示のフォーム要素にアタッチして、そこで値を取得することもできます。ただし、オブジェクト モデルを結び付けてコントローラーから渡すことになります。
于 2013-01-15T20:12:49.420 に答える
0
私のプロジェクトの 1 つにリンクされているジェロミーの質問の回答の 1 つを更新しました。
(function ($) {
//http://stackoverflow.com/questions/901115/how-can-i-get-query-string-values
//usage $.QueryString["param"]
$.QueryString = (function (a) {
if (a == "") return {};
var b = {};
for (var i = 0; i < a.length; ++i) {
var p = a[i].split('=');
if (p.length != 2) continue;
b[p[0]] = decodeURIComponent(p[1].replace(/\+/g, " "));
}
return b;
})(window.location.search.substr(1).split('&'));
$.mvcId = (function (a.toLowerCase()) {
//usage $.mvcId("Bar"); /Foo/Bar/162 (Gets 162)
var b = location.href.toLowerCase();
var c;
if (a != "") {
a += "/";
c = b.lastIndexOf(a);
if (~c) { // ~ = truthy http://stackoverflow.com/questions/1789945/javascript-string-contains
b = b.substring(c, b.length);
}
else {
throw "didn't match querystring";
}
}
c = b.lastIndexOf("/");
var id = b.substring(c + 1, b.length);
return id;
});
})(jQuery);
だからそれを
//url is /foo/bar/123
var foo = $.mvcId("bar");
返す123
于 2013-01-15T20:31:18.477 に答える