2012-07-15 52 views
0

我的代碼存在一些問題,希望有人能幫我一把。以下是我正在處理的代碼段:[HttpPost]中的模型值爲空

[Authorize] 
     public ActionResult EventResults(int id) 
     { 
      List<Event> CompetitionEvents = Event.getEventsByCompetitionId(id); 
      ViewBag.CompetitionEvents = CompetitionEvents; 
      List<Person> Competitors = Competition.getCompetitorsByCompetitionID(id); 
      ViewBag.Competitors = Competitors; 
      List<Results> Results = Competition.getCompetitorResultsPairings(CompetitionEvents, Competitors); 
      ViewBag.Results = Results; 
      ViewBag.OrganizerEmail = Competition.getCompetitionById(id).OrganizerEmail; 
      return View(); 
     } 
@model BINC.Models.Results 
@using BINC.Models; 
@{ 
    var eventList = ViewBag.CompetitionEvents as List<Event>; 
    var competitorList = ViewBag.Competitors as List<Person>; 
    var resultList = ViewBag.Results as List<Results>; 
} 
<h2></h2> 
<p>Results:</p> 
    @using (Html.BeginForm()) 
     { 
      foreach (var evt in eventList) 
      { 
       <fieldset> 
        <legend>@evt.activity.Name</legend> 
        <p>Event Description: @evt.activity.Description</p> 
        @foreach (var competitor in competitorList) 
        { 
         foreach (var result in resultList) 
         { 
          if (result.EventID == evt.id && result.CompetitorEmail == competitor.Email) 
          { 
           <p>Competitor: @competitor.FirstName @competitor.LastName</p> 
           <p>Score: @result.Score</p> 
           if (ViewBag.OrganizerEmail.Equals(@User.Identity.Name)) 
           { 
            @Html.LabelFor(model => model.Score, "New Score "); 
            @Html.TextBoxFor(model => model.Score, new { maxlength = 10, style = "width:125px" }) 
            <input type="submit" name="submitButton" value="Update" /> 
           } 
          } 
         } 
        } 
       </fieldset> 
      } 
     } 
[HttpPost] 
     public ActionResult EventResults(Results res) 
     { 
      //stuff 
     } 

我的問題不過是在我的結果對象上設置了分數。 例如,當我將值'15'放入文本框並單擊'Update'時,我將Result模型對象傳遞給httppost方法,它將除'score'字段之外的所有內容設置爲null剛剛進入。

我是否過分複雜呢?有更容易的方法嗎?

我嘗試添加

@Html.HiddenFor(model => model.EventID); 
@Html.HiddenFor(model => model.CompetitorEmail); 

,但似乎並沒有幫助任何。

回答

0

您有多個提交按鈕,並且可能是問題,這還沒有考慮好做法

<input type="submit" name="submitButton" value="Update" /> 

只保留一個在表格末尾提交按鈕

0

Basically--確保你通過模型來查看 - 並使用Html Helpers(即TextBoxFor()和HiddenFor)

我不認爲這是提交按鈕的問題 - 但可能會幫助的一件事是實際將模型傳遞給視圖。您正在使用ViewBag傳遞數據。將模型傳遞給View,並且您的Html Helpers應該生成正確的表單名稱,以便模型綁定起作用。