您好,感谢您使 stackoverflow 成为像我这样学习程序员的绝佳资源。我在这里阅读了很多答案来帮助我的第一个 MVC 项目,这是我第一次提出问题。
这是我的下拉 HTML
<div class="dropdown">
<select id="assetSelect" onchange="location = this.options[this.selectedIndex].value;">
<option value="/History/Index/All">All Assets</option>
@foreach (var item in Model.NodeInfo)
{
<option value="/History/Index/@item.node.name">@item.node.name</option>
}
</select>
</div>
从下拉列表中选择一个项目后,网址将如下所示
http://web.site/History/Index/G0000106
现在我试图获取 URL 的最后一部分(在本例中为 G0000106)并将相应的下拉选项设置为选中。这是我到目前为止拼凑而成的 JavaScript,但它不起作用。
$('#assetSelect').find('option').each(function () {
function getCurrentPageId() {
var params = window.location.href.split('/');
var i = params.length;
var pageId = params[i];
return pageId;
}
var currentPageId = getCurrentPageId();
var $this = $(this);
if ($this.text() == currentPageId) {
$this.attr('selected', 'selected');
return false;
}
});
此函数可以与填充下拉列表的函数一起使用吗?这是最好的方法还是有 HTML 帮助器可以做到这一点?感谢任何帮助,谢谢!
最佳答案
选项 1。您可以显着简化代码:
function getCurrentPageId() {
var params = window.location.href.split('/');
return params[params.length - 1];
}
var pageId = getCurrentPageId();
$('#assetSelect').find('option:contains(' + pageId + ')').prop('selected', true);
无论如何,你的问题出在这一行:
var i = params.length;
var pageId = params[i];
它应该是params[i - 1]
,因为您想获取最后一个数组元素。
选项 2. 一种更简单但也适合您的方法是使用 location.pathname
:
$('#assetSelect').val(window.location.pathname);
关于javascript - 如何设置通过查看 MVC URL 选择的下拉选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26263400/