0

コードに問題があり、誰かが手を貸してくれることを望んでいました。私が取り組んでいるスニペットは次のとおりです。

[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」をテキスト ボックスに入力して「更新」をクリックすると、結果モデル オブジェクトが httppost メソッドに渡されます。このメソッドでは、「スコア」フィールド以外はすべて null に設定されています。入りました。

私はこれを複雑にしすぎていますか?もっと簡単な方法はありますか?

追加してみました

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

しかし、それは何の役にも立たないようでした。

4

2 に答える 2

0

複数の [送信] ボタンがあり、それが問題になる可能性があります。また、これは良い習慣とは見なされません

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

フォームの最後に送信ボタンを 1 つだけ配置する

于 2012-07-15T09:30:33.427 に答える
0

基本的に、ビューにモデルを渡すことを確認し、Html ヘルパー (つまり、TextBoxFor() と HiddenFor) を使用します。

送信ボタンの問題ではないと思いますが、おそらく役立つのは、モデルを実際にビューに渡すことです。ViewBag を使用してデータを渡しています。モデルを View に渡すと、Html ヘルパーはモデル バインディングが機能するために正しいフォーム名を生成する必要があります。

于 2012-07-15T12:39:51.843 に答える