我正在尝试创建一个视图,其中使用模型类填充表,并创建复选框。我的问题是,当我尝试使用提交按钮发回数据时,当前的表格页面复选框数据被回发,任何其他数据都没有回发。 这是我的控制器代码
public ActionResult Index(string currentFilter, int? page)
{
int pageSize = 3;
int pageNumber = (page ?? 1);
var people = from p in db.Peoples select p;
people = people.OrderBy(x => x.Name);
return View(people.ToPagedList(pageNumber, pageSize));
}
[HttpPost]
public ActionResult Create(PeopleDB peopleDb, string txtMessage, string[] selectedNames)
{
string num="";
foreach (string nameID in selectedNames)
{
if (nameID != "false")
{
int uid = Int32.Parse(nameID);
if (!num.IsNullOrWhiteSpace())
num = num + ","+ db.Peoples.Where(x => x.Id == uid).Select(x => x.PhoneNumber).FirstOrDefault().ToString();
else
{
num=db.Peoples.Where(x => x.Id == uid).Select(x => x.PhoneNumber).FirstOrDefault().ToString();
}
}
}
这是我的观点
@using Start.Models
@using PagedList.Mvc;
@model PagedList.IPagedList<Start.Models.PeopleDB>
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
@using (Html.BeginForm("Create", "SendSms"))
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.Label("lblMessage","Message",htmlAttributes:new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.TextArea("txtMessage",new{@maxlength="160" ,cols="55",rows="8"})
</div>
</div>
<table class="table">
<tr>
<th>
Name
</th>
<th>
PhoneNumber
</th>
<th>
Send
</th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
@Html.DisplayFor(modelItem => item.PhoneNumber)
</td>
<td>
@Html.CheckBox("selectedNames", new {@value = item.Id})
</td>
</tr>
}
</table>
<br />
Page @(Model.PageCount < Model.PageNumber ? 0 : Model.PageNumber) of @Model.PageCount
@Html.PagedListPager(Model, page => Url.Action("Index",
new { page, sortOrder = ViewBag.CurrentSort, currentFilter = ViewBag.CurrentFilter }))
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Send" class="btn btn-default" />
</div>
</div>
</div>
}