2017-07-21 5 views
0

ブール値がfalseに設定されたジョブのリストを返すリストがあります。私のビューではtrueに変更したいと思います。私の問題は、ビューがIDを返すことがないということです。理由はわかりません。チェックボックスのリストからブール値を変更する

最初はforeachを使っていましたが、いくつかの研究の後でIListを使うべきだとわかりました。ここで

は、バックエンドである:

[HttpGet] 
[Authorize(Roles = MyRoles.Admin)] 
public ActionResult JobsToModerate() 
{ 
    var allJobs = db.Jobs.Where(x => x.isModerated == false).ToList(); 

    return View(allJobs); 
} 

[HttpPost] 
[Authorize(Roles = MyRoles.Admin)] 
public ActionResult JobsToModerate([Bind(Include = "ID,isModerated")] Job job, EditJobViewModel editJob) 
{ 
    if (!ModelState.IsValid) 
    { 
     var jobs = db.Jobs.Find(editJob.ID); 

     if (jobs == null) 
     { 
      return HttpNotFound(); 
     } 
     else 
     { 
      jobs.ID = editJob.ID; 
      jobs.isModerated = editJob.isModerated; 
     } 

     try 
     { 
      db.SaveChanges(); 
     } 
     catch (Exception ex) { throw ex; } 
    } 

    return View(); 
} 

マイビュー:

@model IList<JobSite3.Models.Job> 

@using (Html.BeginForm("JobsToModerate", "Jobs", FormMethod.Post)) 
{ 
    @Html.AntiForgeryToken() 
    @Html.ValidationSummary(true, "", new { @class = "text-danger" }) 



    for (var i = 0; i < Model.Count; i++) 
    { 
     @Html.HiddenFor(model => model[i].ID) 
     <table class="table"> 
     <tr> 
      <th> 
       @Html.DisplayNameFor(model => model[i].Name) 
      </th> 
      <th> 
       @Html.DisplayNameFor(model => model[i].isModerated) 
      </th> 
      <th></th> 
     </tr> 
     <tr> 
      <td> 
       @Html.DisplayFor(model => model[i].Name) 
      </td> 
      <td> 
       @Html.EditorFor(model => model[i].isModerated) 
      </td> 
     </tr> 


     </table> 

     <input type="submit" id="btnNew" value="Save" class="btn btn-default" /> 
    } 
} 

私はそこに解決策と同様の問題があると考えているが、私はまだそれを発見していません。

答えて

1

ビューのモデルはIList<Job>です。したがって、POSTメソッドは一致する必要があります。それはあなたのメソッド内のコードは、コレクションのために理にかなっていない、とそのごEditJobViewModelクラスが何であるかクリアされませんしかし

public ActionResult JobsToModerate(List<Job> model) 
{ 
    .... 

する必要があります。それぞれJobを反復してデータベースを更新したいと思っています

+0

私は答えとしてマークします。また、ビュー入力に応じてブール状態を編集するための 'post' 。そうですね、私は怠惰で、別のアクションからペーストしてコピーした後、ソロ要素の代わりにリストを修正してしまい、最後に混乱してしまったので意味がありません。 – Eduard

関連する問題