List< Model>使用一个参数,该参数在更改时应该来自下拉列表
本文关键字:参数 下拉列表 一个 Model List | 更新日期: 2023-09-27 18:03:54
我有一个列表类型的视图,模型有一个selectList,在改变时应该改变actionLink参数。
我试过使用表单并将模型的所有内容发布到控制器,但它不起作用。
这是视图的一部分
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.coursenumber)
</td>
<td>
@Html.DisplayFor(modelItem => item.coursename)
</td>
<td>
@Html.DisplayFor(modelItem => item.coursescopename)
</td>
<td>
@Html.DisplayFor(modelItem => item.avetmiss)
</td>
<td>
@Html.DropDownListFor(modelitem => item.InvoiceOptionsId, item.InvoiceOptionsList, "--select--", new {@class = "form-control", id = "ddl" + item.coursenumber})
</td>
<td>
@Html.ActionLink("Events","Events",new{id= item.coursenumber,priceKey = item.InvoiceOptionsId})
</td>
</tr>
}
priceKey是从下拉列表中计算出来的
你需要使用javascript/jquery来处理客户端事件。一种选择是将html修改为(假设是for
循环-参见下面的注释)
<td>
@Html.DropDownListFor(m => m[i].InvoiceOptionsId, Model[i].InvoiceOptionsList, "--select--", new { @class = "form-control" })
</td>
<td>
<a href="#" class="event" data-id="@Model[i].coursenumber">Events</a>
</td>
然后添加以下脚本(需要jquery{version}.js
)
$(function() {
var url = '@Url.Action("Events")';
$('.event').click(function() {
var id = $(this).data('id'); // get the items id
var priceKey = $(this).closest('tr').find('select').val(); // get the value of the associated dropdown
location.href = url + '?id=' + id + '&priceKey=' + priceKey; // redirect
});
});
注意:它不清楚如果你已经显示的代码是一个表单的一部分,你发回,但如果是这样,你需要使用一个for
循环(或自定义EditorTemplate
)来生成表单控件。使用foreach
循环生成重复的name
属性(没有索引器),当你发布表单时,这些属性将不会绑定到你的模型。