0

コントローラーからビューにデータを送信するモジュールがあります。複数の行があり、希望どおりに正しく表示されます。ユーザーがいくつかの変更を加えた後、actionresult を使用してデータベースに変更を保存しようとしています。しかし、値を取得しようとすると、モデルが空/nullであると表示されますが、そうではありません...何が問題なのかわかりません...よろしくお願いします...

これが私のモデルです:

public class ManageAppsModel
{

  public string appname { get; set; }
  public int id { get; set; }
  public bool chkbillboard { get; set; }
}

これが私の見解です:

@model IEnumerable<Nd.Models.ManageAppsModel>

@using (Html.BeginForm(null, null, FormMethod.Post, new { enctype = "multipart/form-data" }))
{
  <br />
  <h2 style="color:#80afdd;font-size:14px;">
    <strong> List of Existing Apps:</strong>
  </h2>
  <br />
  <div class="section-copy">
    <table>
    @foreach (var item in Model)
    {
      <tr>
      @if (Context.User.Identity.Name == "admin")
      {
        <td style="width:50px;">
        @if (@item.chkbillboard == true)
        {
          <input name ="chk1" class="myCheckbox" type="checkbox" value="@item.chkbillboard" checked="checked" />
        }
        else
        {
          <input name ="chk2" class="myCheckbox" id="chkbox" type="checkbox" value="@item.chkbillboard" onclick="return chkbox();" />
        }                                   
        </td>     
      }
        <td style="width:200px;">
          @item.appname
        </td> 
        <td style="width:50px;">
          @Html.ActionLink("Edit", "UpdateAPIForm", new { @id = item.id, appname = item.appname })
        </td>
      </tr>
      }
    </table>
  </div>
  <br/><br/>
  if (Context.User.Identity.Name == "admin")
  { 
    <div>
      <input type="submit" name="Upload" value="Upload new flash info message" />
    </div>
  }
}

ここに私のアクション結果があります:

[Authorize]
public ActionResult ManageApps(String username)
{
  var a = HttpContext.User.Identity.Name;
  var context = new ndCorp_SiteEntities();

  if (a == "admin")
  {
    var viewModel1 = from dc in context.DevContactInfoes
                     join dm in context.DevMarketplaceInfoes on dc.AppName equals dm.AppName
                     select new ManageAppsModel { appname = dc.AppName, id = dc.SNo, chkbillboard = dc.billboard.Value }
                     ;
    return View( viewModel1 );
  }
  else
  {
    var viewModel = from du in context.DevUserInfoes
                    join dc in context.DevContactInfoes on du.UserName equals dc.UserName
                    join dm in context.DevMarketplaceInfoes on dc.AppName equals dm.AppName
                    where du.UserName == a
                    select new ManageAppsModel { appname = dc.AppName, id = dc.SNo };
    return View(viewModel);
  }

}

[Authorize]
[HttpPost]
public ActionResult ManageApps(IEnumerable<ManageAppsModel> apps)
{
  var user = HttpContext.User.Identity.Name;
  var context = new ndCorp_SiteEntities();

  foreach (var ManageAppsModel in apps)
  {
    if (ManageAppsModel.chkbillboard == true)
    {
      Response.Write("hello");
    }
  }
  return RedirectToAction("ManageApps", new { username = user });
}
4

1 に答える 1

1

チェックボックスの名前は chk1 と chk2 ですが、フィールドの名前は chkBillboard です。値を投稿すると、入力フィールドの名前を使用して、モデル内のフィールド名が一致します。

正しい形式であることを確認するヘルパーを使用することをお勧めします。

@Html.CheckBoxFor(x => item.chkBillboard, new { @class="myCheckbox" })
于 2013-03-12T23:28:23.260 に答える