2012-02-10 4 views
0

Я делаю один метод действий для 2 видов деятельности (новый ввод и редактирование), и есть только один вид , чтобы обрабатывать эти действия. Но я не понимаю, что бы ни случилось, метод действий всегда считает, что это новый вход. Я узнал, что из-за идентификатора всегда 0, но проблема в том, что при редактировании, когда в представлении идентификатор верен как идентификатор данных, но когда я нажимаю кнопку отправки, метод действия просто см. значение 0.Почему значение изменяется после нажатия кнопки отправки?

Вот метод действия я использовал:

[HttpPost] 
public ActionResult AddAssignment(SateliteSchedule SatSched) 
{ 
    var txt = ""; 

    if (ModelState.IsValid) 
    { 
     if (SatSched.ID == 0) 
     { 
      db.SateliteSchedules.Add(SatSched); 
      txt = "{0} has been added!"; 
     } 
     else 
     { 
      db.Entry(SatSched).State = EntityState.Modified; 
      txt = "{0} has been modified!"; 
     } 

     db.SaveChanges(); 

     Utility utl = new Utility(); 
     TempData["message"] = string.Format(txt, utl.GetSateliteName(SatSched.SateliteID)); 

     return RedirectToAction("FormAssignment"); 
    } 
    else 
    { 
     ViewBag.Message = "ModelState is not Valid!"; 

     return View("ErrorView"); 
    } 
} 

А вот вид:

@using (Html.BeginForm("AddAssignment", "admin", FormMethod.Post)) 
{ 
    @Html.ValidationSummary(true) 

    <table> 
    <tr> 
     <td>@Html.LabelFor(m => m.Tanggal) 
     </td> 
     <td> 
      @Html.EditorFor(m => m.Tanggal) 
      @Html.ValidationMessageFor(m => m.Tanggal) 
     </td> 
    </tr> 
    <tr> 
     <td>@Html.LabelFor(m => m.SateliteID)</td> 
     <td> 
      @Html.DropDownList("SateliteID", (IEnumerable<SelectListItem>)ViewBag.SatList, "--- Satelite ---") 
      @Html.ValidationMessageFor(m => m.SateliteID) 
     </td> 
    </tr> 
    <tr> 
     <td>@Html.LabelFor(m => m.WMOnDuty)</td> 
     <td> 
      @Html.DropDownList("WMOnDuty", (IEnumerable<SelectListItem>)ViewBag.WMList, "--- Worship Manager ---") 
      @Html.ValidationMessageFor(m => m.WMOnDuty) 
     </td> 
    </tr> 
    <tr> 
     <td>@Html.LabelFor(m => m.SMOnDuty)</td> 
     <td>@Html.EditorFor(m => m.SMOnDuty)</td> 
    </tr> 
    <tr> 
     <td>@Html.LabelFor(m => m.WLOnDuty)</td> 
     <td>@Html.EditorFor(m => m.WLOnDuty)</td> 
    </tr> 
    <tr> 
     <td>@Html.LabelFor(m => m.MLOnDuty)</td> 
     <td>@Html.EditorFor(m => m.MLOnDuty)</td> 
    </tr> 
    <tr> 
     <td>@Html.LabelFor(m => m.SoundMan)</td> 
     <td>@Html.EditorFor(m => m.SoundMan)</td> 
    </tr> 
    <tr> 
     <td valign=top>@Html.LabelFor(m => m.Note)</td> 
     <td>@Html.TextAreaFor(model => model.Note, new { @class = "memo-text" })</td> 
    </tr> 
    </table> 
    <div> 
     <input type="submit" value="Save" /> 
     @Html.ActionLink("Kembali", "FormAssignment") 
    </div> 
} 

Что я должен проверить, чтобы исправить это?

ответ

2

У вас должен быть идентификатор как скрытый, поэтому, когда вы идете по методу, модель будет иметь id, приписанный к ней (это имеет смысл?). попробуйте поместить его в вашу форму.

@Html.HiddenFor(m => m.ID) 
+0

А, я пропустил это. Большое спасибо, он работает гладко сейчас – Tanu

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