MVC 4, ASP.NET을 사용하고 있습니다. 체크 박스 값을 컨트롤러의 포스트 메서드에 전달하는 문제가 있습니다. 널 값으로 리턴합니다.HTTP 배열이 문자열 배열을 반환하지 않습니다.
여기 내 시야의 일부 (작품을 얻기 제대로 데이터를 채우고) :
는@using (Html.BeginForm())
{
<fieldset>
<table>
<tr>
@{
int cnt = 0;
List<LearningEnterprises.ViewModel.AssignedVendor> techs = ViewBag.Tech;
foreach (var tech in techs)
{
if (cnt++ % 3 == 0)
{
@:</tr><tr>
}
@:<td>
<input type="checkbox"
name="selectedTechs"
value="@tech.TechID"
@(Html.Raw(tech.Assigned ? "checked=\"checked\"" : "")) />
@tech.TechID @: @tech.Title
@:</td>
}
@:</tr>
}
</table>
<p>
<input type="submit" value="Save" id="save" />
</p>
</fieldset>
}
여기 내 게시물의 :
[Authorize(Roles = "Admin")]
[HttpPost, ValidateInput(false)]
public ActionResult EditVendor(int? id, string[] selectedTech)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
var vendor = db.Vendors
.Include(i => i.VendorType)
.Include(i=>i.Stocks)
.Where(i => i.ID == id)
.Single();
if (TryUpdateModel(vendor, "",
new string[] { "CompanyName", "PhoneNumber", "Address", "ProvinceState", "City", "Country", "PostalCode", "Email", "numberofBooths", "comments", "electric", "internet", "tonicEquipment", "VendorTypeID" }))
{
try
{
UpdateVendorTech(selectedTech, vendor);
db.Entry(vendor).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
catch (Exception /* dex */)
{
//Log the error (uncomment dex variable name and add a line here to write a log.
ModelState.AddModelError("", "Unable to save changes. Try again, and if the problem persists, see your system administrator.");
}
}
PopulateAssignedTechData(vendor);
PopulateDropDownLists(vendor.VendorTypeID);
return View(vendor);
}
문자열 [] selectedTech 디버그에서 null 값을 표시한다. 보기에서 선택된 체크 상자의 id 값과 같아야합니다.