Asp.net mvc 是否将特定表数据从视图返回控制器?asp.NETMVC
因此,我有一个视图,它当前显示数据库中的一个数据表,并带有一个select/selectall复选框。我想做的是能够获得我的CustomerNumber列表,以及它们是否已被检查,并将其返回给我的控制器以供进一步操作 下面是我的视图当前的编写方式。我已经尝试了无数种方法来实现这一点,但我被难倒了Asp.net mvc 是否将特定表数据从视图返回控制器?asp.NETMVC,asp.net-mvc,Asp.net Mvc,因此,我有一个视图,它当前显示数据库中的一个数据表,并带有一个select/selectall复选框。我想做的是能够获得我的CustomerNumber列表,以及它们是否已被检查,并将其返回给我的控制器以供进一步操作 下面是我的视图当前的编写方式。我已经尝试了无数种方法来实现这一点,但我被难倒了 @model MassInactiveInspections.Models.CustomerInfoList <div class="container"> <h2>
@model MassInactiveInspections.Models.CustomerInfoList
<div class="container">
<h2>@ViewBag.Title</h2>
<div class="bs-callout bs-callout-info" style="margin-bottom: 0px;">
</div>
<div class="col-md-8">
@using (Html.BeginForm("SelectedCustomers", "Home", new { ReturnUrl = ViewBag.ReturnUrl }, FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
{
@Html.AntiForgeryToken()
<hr />
@Html.ValidationSummary(true)
<div class="form-group">
<table class="table table-bordered">
<tr>
<th class="active">@Html.DisplayName("Select All?")<input type="checkbox" class="select-all checkbox" name="select-all" /></th>
<th>@Html.DisplayNameFor(m => m.CustomerInfoListView.FirstOrDefault().BusinessName)</th>
<th>@Html.DisplayNameFor(m => m.CustomerInfoListView.FirstOrDefault().CustomerName)</th>
<th>@Html.DisplayNameFor(m => m.CustomerInfoListView.FirstOrDefault().CustomerNumber)</th>
<th>@Html.DisplayNameFor(m => m.CustomerInfoListView.FirstOrDefault().InspectionCycleDescription)</th>
<th>@Html.DisplayNameFor(m => m.CustomerInfoListView.FirstOrDefault().LastInspectionDate)</th>
<th>@Html.DisplayNameFor(m => m.CustomerInfoListView.FirstOrDefault().RouteCode)</th>
<th>@Html.DisplayNameFor(m => m.CustomerInfoListView.FirstOrDefault().RouteID)</th>
<th>@Html.DisplayNameFor(m => m.CustomerInfoListView.FirstOrDefault().SiteNumber)</th>
<th>@Html.DisplayNameFor(m => m.CustomerInfoListView.FirstOrDefault().SystemCode)</th>
</tr>
@foreach (var item in Model.CustomerInfoListView)
{
<tr>
<td class="active"> <input id="Selected" input type="checkbox" class="select-item checkbox" name="select-item" value="1000" /> </td>
<td>@Html.DisplayFor(modelItem => item.BusinessName)</td>
<td>@Html.DisplayFor(modelItem => item.CustomerName)</td>
<td>
@Html.DisplayFor(modelItem => item.CustomerNumber)
@Html.HiddenFor(m => m.CustomerInfoListView.FirstOrDefault().CustomerNumber)
</td>
<td>@Html.DisplayFor(modelItem => item.InspectionCycleDescription)</td>
<td>@Html.DisplayFor(modelItem => item.LastInspectionDate)</td>
<td>@Html.DisplayFor(modelItem => item.RouteCode)</td>
<td>@Html.DisplayFor(modelItem => item.RouteID)</td>
<td>@Html.DisplayFor(modelItem => item.SiteNumber)</td>
<td>@Html.DisplayFor(modelItem => item.SystemCode)</td>
</tr>
}
</table>
</div>
<div class="form-group">
<div style="margin-top: 50px">
<input type="submit" id="btnLost" class="btn btn-primary" value="Lost"/>
<input type="submit" class="btn btn-primary" name="OOBButton" value="OOB" />
<input type="submit" class="btn btn-primary" name="RefusedButton" value="Refused" />
</div>
</div>
}
</div>
</div>
这里还有我的javascript用于复选框
[HttpPost]
public ActionResult SelectedCustomers(CustomerInfoList customerNumberList)
{
return View("ViewCustomerInfo");
}
//column checkbox select all or cancel
$("input.select-all").click(function () {
var checked = this.checked;
$("input.select-item").each(function (index, item) {
item.checked = checked;
});
});
//check selected items
$("input.select-item").click(function () {
var checked = this.checked;
console.log(checked);
checkSelected();
});
//check is all selected
function checkSelected() {
var all = $("input.select-all")[0];
var total = $("input.select-item").length;
var len = $("input.select-item:checked:checked").length;
console.log("total:" + total);
console.log("len:" + len);
all.checked = len === total;
}
});
不确定这是否是处理它的最佳方式,但我只是简单地将我想要的字段添加到HiddenFor帮助器中,并将它们返回到相应的控制器。谢谢大家的帮助
@Html.HiddenFor(m => m.additionalCustomerInfoListView[i].CustomerNumber)
不确定这是否是处理它的最佳方式,但我只是简单地将我想要的字段添加到HiddenFor帮助器中,并将它们返回到相应的控制器。谢谢大家的帮助
@Html.HiddenFor(m => m.additionalCustomerInfoListView[i].CustomerNumber)
似乎您的
CustomerInfoListView
视图模型需要一个名为Selected
的新属性,那么在
所在的位置,您可以在循环中使用@Html.EditorFor(m=>m.CustomerInfoListView[i]
(其中i
是该项的索引位置)。然后,当您发布到控制器时,您可以访问该数据。您不能使用foreach
循环为集合生成表单控件-请参阅。要处理您的复选框并发回选择,请参阅。你需要一些javascript来处理你的“全选”checkbox@StephenMuecke他是否可以保留foreach
并使用var i=Model.CustomerInfoListView.IndexOf(项目)代码>获取每次迭代的索引位置?@zgood,不,这不起作用。它不会为绑定生成正确的name
属性(需要是name=“CustomerFolistView[0]。CustomerNumber”
,name=“CustomerFolistView[1]。CustomerNumber”
等。@StephenMuecke我想你误解了我的要求。请查看(只有带有foreach
循环的剃须刀部分)。你看,我可以使用foreach
,但仍然可以通过@Html
剃须刀助手获得索引值来生成正确的名称。我知道这很有效,我以前成功地使用过它,我或多或少想知道它是否比使用I++
的正常效率低。我只是想告诉你可以使用foreach
为集合生成控件,您只需自行管理索引值,就好像您需要在名为Selected
的视图模型上创建一个新属性,然后在
所在的位置可以使用@Html.EditorFor(m=>m.CustomerInfoListView[i].Selected)
在循环中(其中i
是该项的索引位置)。然后,当您发布到控制器时,您将有权访问该数据。您不能使用foreach
循环为集合-reference生成表单控件。要处理复选框并发回选择-reference,您需要一些javascript来处理“全选”checkbox@StephenMuecke他能保留这张支票吗de>foreach
并使用var i=Model.CustomerInfoListView.IndexOf(item);
获取每次迭代的索引位置?@zgood,不,这将不起作用。它不会为绑定生成正确的name
属性(需要是name=“CustomerInfoListView[0]。CustomerNumber”
,name=“CustomerInfoListView[1] .CustomerNumber“
等@StephenMuecke我想你误解了我的要求。请看(只有带有foreach
循环的剃须刀部分)。你看,我可以使用foreach
,但仍然可以通过@Html
剃须刀助手获得索引值来生成正确的名称。我知道这很有效,我以前成功地使用过它,我或多或少想知道它是否比使用I++
的正常效率低。我只是想告诉你可以使用foreach
为集合生成控件,您只需自己管理索引值即可