我有一个 ASP.NET MVC4 应用程序,它使用 jQuery 对同一项目中的 WebApi 控制器进行一些调用。将 ID 传递给控制器,/MyController/123
应在页面加载时显示不同的数据。问题是我不知道如何将该 ID 传递给 jQuery。它本身不是查询字符串参数,所以这不起作用。我想要的是 URL 中的“123”。有没有一种通用/标准的方法可以做到这一点,而不是仅仅切断 URL?
问问题
154 次
2 回答
1
您可以将它放在控制器中的 ViewBag 对象中,ViewBag.PassedId = Id,然后在前端使用剃刀或任何视图引擎方法将其放入 javascript 变量中,
<script>
var id = @(ViewBag.PassedId);
</script>
或者您可以将其附加到隐藏的表单元素并在那里获取值。但是您会绑定一个对象模型以从控制器传递。
于 2013-01-15T20:12:49.420 回答
0
我更新了 Jeromy 为我的一个项目链接到的问题中的一个答案:
(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 回答