2013-03-12 64 views
0

我有一个模块,从控制器发送数据来查看。它有多行,正确显示,因为我想要的。现在,在用户进行了一些更改之后,我再次尝试在actionresult的帮助下将更改保存在数据库中。但是当我尝试它说我的型号是空/空去取值,但它不是...我没有得到什么问题...在此先感谢...模型为空时,试图从视图中获取数据到控制器

这里是我的模型:

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> 
    } 
} 

这里是我的ActionResult:

[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 }); 
} 
+3

您的HTML表单不包含任何输入字段(您的复选框不在表格之外)。你的复选框也没有'name'属性。所以我真的不知道你希望发送到你的服务器。 – 2013-03-12 22:14:56

+0

我已经更新了我的视图,但仍然在操作结果中我的“应用”值为空 – user207888 2013-03-12 22:25:05

+0

那么您的复选框仍然没有名称,所以当您提交表单时,没有任何内容会发送到您的控制器操作是完全正常的。 – 2013-03-12 22:26:15

回答

1

你的复选框被命名为CHK1和CHK 2,但你的领域被称为chkBillboard。发布您的值时,它会使用输入字段的名称来匹配模型中的字段名称。

我建议使用助手,它确保你有正确的格式。

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