2012-02-10 1 views
0

2つのアクティビティ(新しい入力と編集)に対して1つのアクションメソッドを作成し、それらのアクティビティを処理するビューは1つだけ です。 しかし、私は何が起こっても、アクションメソッドは常にそれが新しい入力だと思うかどうか分かりません。 私はそれがIDが常に0であることを学んだが、問題は編集を行うときにビュー内でIDがデータのIDとして正しいが、送信ボタンをクリックすると、 IDの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を隠しておく必要があります。そのため、メソッドに入るとモデルにIDが割り当てられます(それは意味がありますか?)。これをあなたのフォームに入れてみてください。

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

ああ、私はそれを逃しました。ありがとう、それは今スムーズに実行されます – Tanu

関連する問題