2013-03-12 2 views
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> 
    } 
} 

Вот мой 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'. Поэтому я действительно не вижу, что вы ожидаете отправить на свой сервер. –

+0

Я обновил свой просмотр, но все же мое значение «apps» равно null в actionresult – user207888

+0

Ну ваши флажки до сих пор не имеют имени, поэтому совершенно нормально, что при отправке формы ничего не отправляется на действие вашего контроллера. –

ответ

1

Ваши флажков названы Chk1 и ЧК 2, но ваше поле называется chkBillboard. Когда вы публикуете свое значение, оно использует имена полей ввода для соответствия именам полей в вашей модели.

Предлагаю использовать помощник, который гарантирует, что у вас правильный формат.

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

 Смежные вопросы

  • Нет связанных вопросов^_^