C# 试图从视图获取数据到控制器时,模型为空

C# 试图从视图获取数据到控制器时,模型为空,c#,asp.net-mvc,razor,C#,Asp.net Mvc,Razor,我有一个模块,它将数据从控制器发送到视图。它有多个行,并且按照我的要求正确显示。现在,在用户进行了一些更改之后,我再次尝试在actionresult的帮助下将更改保存到数据库中。但是当我尝试获取值时,它会说我的模型为空/null,但它不是…我不知道问题出在哪里…提前谢谢 这是我的模型: public class ManageAppsModel { public string appname { get; set; } public int id { get; set; } publ

我有一个模块,它将数据从控制器发送到视图。它有多个行,并且按照我的要求正确显示。现在,在用户进行了一些更改之后,我再次尝试在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>
  }
}
@model IEnumerable
@使用(Html.BeginForm(null,null,FormMethod.Post,new{enctype=“multipart/formdata”}))
{

现有应用程序列表:
@foreach(模型中的var项目) { @if(Context.User.Identity.Name==“admin”) { @如果(@item.chkbillboard==true) { } 其他的 { } } @item.appname @ActionLink(“编辑”,“更新表单”,新的{@id=item.id,appname=item.appname}) }

if(Context.User.Identity.Name==“admin”) { } }
以下是我的行动结果:

[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 });
}
[授权]
public ActionResult ManageApps(字符串用户名)
{
var a=HttpContext.User.Identity.Name;
var context=new ndCorp_SiteEntities();
如果(a==“管理”)
{
var viewModel1=来自context.devContentActionFoes中的dc
在dc.AppName上的context.DevMarketplaceInfoes中加入dm等于dm.AppName
选择新的ManageAppsModel{appname=dc.appname,id=dc.SNo,chkbillboard=dc.billboard.Value}
;
返回视图(viewModel1);
}
其他的
{
var viewModel=来自context.DevUserInfoes中的du
在du.UserName等于dc.UserName的context.devContentActionFoes中加入dc
在dc.AppName上的context.DevMarketplaceInfoes中加入dm等于dm.AppName
其中du.UserName==a
选择新的ManageAppsModel{appname=dc.appname,id=dc.SNo};
返回视图(viewModel);
}
}
[授权]
[HttpPost]
公共操作结果管理应用程序(IEnumerable应用程序)
{
var user=HttpContext.user.Identity.Name;
var context=new ndCorp_SiteEntities();
foreach(应用程序中的var ManageAppsModel)
{
if(ManageAppsModel.chkbillboard==true)
{
回复。写下(“你好”);
}
}
返回RedirectToAction(“ManageApps”,new{username=user});
}

您的复选框名为chk1和chk2,但您的字段名为chkBillboard。发布值时,它使用输入字段的名称与模型中的字段名称匹配

我建议使用一个助手,这样可以确保格式正确

@Html.CheckBoxFor(x => item.chkBillboard, new { @class="myCheckbox" })

您的HTML表单不包含任何输入字段(您的复选框在表单之外)。此外,您的复选框没有
名称
属性。因此,我不知道您希望发送到服务器的是什么。我已更新了视图,但我的“应用程序”值在操作结果中仍然为空。您的复选框仍然没有名称,因此在提交表单时,没有任何内容发送到控制器操作是完全正常的。您是在谈论name=“chk1”和name=“chk2”???