ASP.NET MVC 2 - простое увеличение значения в базе данных путем отправки в представлении - PullRequest
3 голосов
/ 03 октября 2010

Я предполагаю, что это очень просто, но я изучаю MVC 2 прямо сейчас, и я застрял. Я получил строго типизированное представление с некоторыми полями и кнопками, которые должны что-то изменить в базе данных, нажав на них. Так это код

<% using (Html.BeginForm("UpVote", "Home",FormMethod.Post,new { linkId = link.LinkID }))
   {%>
        <input type="submit" value="UP" />
<% } %>

И мой контроллер

[HttpPost]
public void UpVote(int linkId)
{
    var updateLink = geekDB.Link.Single(a => a.LinkID == linkId);
    updateLink.UpVotes++;
    geekDB.SaveChanges();

    RedirectToAction("Index");
}

И это не работает. Когда я нажимаю кнопку, страница перезагружается, но ничего не происходит. Я проверил это с точкой останова в методе UpVote, но это никогда не останавливалось, и я понятия не имею, почему.

Ответы [ 2 ]

3 голосов
/ 03 октября 2010

все ваши действия должны быть ActionResult, вы сделали недействительным o_O

Вы также можете поместить ViewResult, ContentResult RedirectRe .. но они все ActionResult

1 голос
/ 03 октября 2010

Я бы сначала проверил ваши маршруты.

Также ваше текущее использование BeginForm не является правильным, поскольку оно выдаст <form action="/Home/UpVote" linkid="yourlinkid" method="post">, когда я подозреваю, что вы хотите, чтобы это было что-то вроде <form action="/Home/UpVote?linkid=yourlinkid"...> - замена двух последних параметров приведет к такому выводу:

<% using (Html.BeginForm("UpVote", "Home",new { linkId = link.LinkID }, FormMethod.Post)) {%>
        <input type="submit" value="UP" />
<% } %>

Остальные ваши вещи выглядят просто отлично, не зная больше о вашем проекте.

...