我在部分视图中列出了客户列表
@{
List<Clients> clientsList = ViewBag.ClientsList;
}
<script src="~/Scripts/jquery-3.1.1.min.js"></script>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Clients <span class="caret"></span></a>
<ul class="dropdown-menu" role="menu">
@foreach (Clients c in clientsList)
{
<li>@Html.ActionLink(c.NomClient, "Index", "Home", new {c.ID}, null)</li>
}
</ul>
</li>
我想要的是,当用户点击下拉列表中的客户端时,它会将客户端ID发送到控制器上的方法,而无需单击提交按钮,例如或使用表单。 我尝试使用ActionLink,但只是通过传递URL中的id,我希望URL中没有clientId。 我怎么能这样做?
THX
答案 0 :(得分:1)
做为
HTML:
Graphite
的javascript:
<ul class="dropdown-menu" role="menu">
@foreach (Clients c in clientsList)
{
<li>@c.NomClient</li>
}
</ul>
答案 1 :(得分:0)
您可以使用Jquery。
在您的li上创建class
,点击此class
即可创建活动。只需使用window.location.href
和@Url.Action()
重定向您的网页。
<强> JQuery的强>
$(".dropdownclient").click(function(){
window.location.href="@Url.Action('Method','Controller')/"+$(this).data("id");
});
<强> HTML 强>
<ul class="dropdown-menu" role="menu">
@foreach (Clients c in clientsList)
{
<li class='dropdownclient' data-id="@c.ClientID">@Html.ActionLink(c.NomClient, "Index", "Home", new {c.ID}, null)</li>
}
</ul>
答案 2 :(得分:0)
使用jQuery试试这个。您的ID不会成为网址的一部分。
<ul class="dropdown-menu" role="menu">
@foreach (Clients c in clientsList)
{
<li><button data-action="do-stuff" data-url="@Url.Action("Index", "Home")" data-id="@c.ID">@c.NomClient</button></li>
}
</ul>
$("[data-action='do-stuff']").on('click', function (event) {
var opt = $(this).data();
$.ajax({
url: opt.url,
data: { id = opt.id },
cache: false,
type: "POST"
success: function (data, textStatus, XMLHttpRequest) {
//do stuff
}
});
});
答案 3 :(得分:0)
@Html.DropDownListFor(m => m.NomClient, new SelectList(ViewBag.ClientsList,"Key", "Value"), "Select", new { @class = "dropdown-menu" })
$(".dropdown-menu").change(function (event) {
$.ajax({
url: "Home/Index/",
data: { id = $(this).val() /* add other additional parameters */ },
type: "POST",
success: function (data) {
//do stuff
}
});
});