1

私はこの問題を抱えています。コントローラーメソッド中にステートメントを介してユーザーが入力したデータにアクセスする必要があります。

これが私のコードです。おそらくこれにより、より明確になります。

// client side
@using (Html.BeginForm())
{
    if (competitorList.Count > 0 && eventList.Count > 0)
    {
        foreach (Event evt in eventList)
        {
            <table>
            <tr><th>@evt.activity.Name</th></tr>
            <tr>
            <th>Name</th>
            <th>Email</th>
            <th>Score</th>
            <th>New Score</th>
            <th>Update</th>
            </tr>
            @foreach (Results res in resultList)
            {
                if (res.EventID == evt.id)
                {
                    string competitorName = Person.getUserByEmail(res.CompetitorEmail).FirstName + Person.getUserByEmail(res.CompetitorEmail).LastName;


                    <tr>
                        <td>@competitorName</td>
                        <td>@res.CompetitorEmail</td>
                        <td>@res.Score</td>
                        <td><form action="EventResults"><input type="text" name="score" id="score" /></form></td>
                        <td>@Html.ActionLink("Update", "UpdateResults", "Competition", new { compId = evt.competitionId, evtId = res.EventID, email = res.CompetitorEmail }, null)</td>
                    </tr>
                }
            }
            </table>
            <hr />
        }
    }
    else
    {
        <p>There are currently no competitors invited to participate</p>
    }
}


// controller
public ActionResult UpdateResults(FormCollection form, int compId, int evtId, string email)
        {
            //////     this returns 0.0     /////
            double score = Convert.ToDouble(form["score"]);

            BINC.Models.Results.UpdateResults(evtId, email, score);

            List<Event> CompetitionEvents = Event.getEventsByCompetitionId(compId);
            ViewBag.CompetitionEvents = CompetitionEvents;

            List<Competitor> Competitors = Competitor.getCompetitors(compId);
            ViewBag.Competitors = Competitors;

            List<Results> Results = Competition.getCompetitorResultsPairings(CompetitionEvents, Competitors);
            ViewBag.Results = Results;

            ViewBag.Competition = Competition.getCompetitionById(compId);

            return View("EventResults");
        }

コントローラー メソッドに表示される内容は機能しません。ページが実際に「送信」されていないためだと思いますか?ただし、送信ボタンの代わりにリンクを使用したいのです。誰か手を貸してくれませんか?

4

2 に答える 2

1

のような ActionType を与えます [HttpPost],[HttpGet],[HttpDelete]

[HttpPost]
public ActionResult UpdateResults(FormCollection form, int compId, int evtId, string email)
{
//Code
}
于 2012-07-18T06:53:55.330 に答える
0

リンクを使用する場合は、投稿リクエストではなく GET リクエストを使用しています。

リンクを使用するオプションは、それを ajax リクエストにするかのいずれかです ( MVC3 Html.ActionLink Postでの以前の回答を参照してください) 。

またはjavascriptを使用してフォームを投稿する: アンカータグを使用してjqueryでフォームを送信するにはどうすればよいですか

$(document).ready(function(){
  $("a").クリック(関数(){
     $("#requestNew").submit();
  });
});


または、すべての href ではなく ID で参照する場合は $("#yourHrefId") を使用します。


于 2012-07-18T19:04:41.243 に答える