Jestem nowy w MVC i wdrażam przykładową aplikację MVC Nerd Dinner w MS MVC2. Jestem na etapie 10, "Ajax umożliwia akceptację RSVP". Dodałem nowy kontroler RSVP i dodaje metodę działania Register tak:Błąd obiadowy Nerd na wezwanie Ajax do rejestracji metody działania
public class RSVPController : Controller
{
DinnerRepository dinnerRepository = new DinnerRepository();
//
// AJAX: /Dinners/RSVPForEvent/1
[Authorize, AcceptVerbs(HttpVerbs.Post)]
public ActionResult Register(int id) {
Dinner dinner = dinnerRepository.GetDinner(id);
if (!dinner.IsUserRegistered(User.Identity.Name)) {
RSVP rsvp = new RSVP();
rsvp.AttendeeName = User.Identity.Name;
dinner.RSVPs.Add(rsvp);
dinnerRepository.Save();
}
return Content("Thanks - we'll see you there!");
}
}
I dodaje odniesienia do obu bibliotek skryptów Ajax i dodaniu kodu poniżej, aby zobaczyć szczegóły, jak to opisano w artykule:
<div id="rsvpmsg">
<% if(Request.IsAuthenticated) { %>
<% if(Model.IsUserRegistered(Context.User.Identity.Name)) { %>
<p>You are registred for this event!</p>
<% } else { %>
<%= Ajax.ActionLink("RSVP for this event",
"Register", "RSVP",
new { id=Model.DinnerID },
new AjaxOptions { UpdateTargetId="rsvpmsg"}) %>
<% } %>
<% } else { %>
<a href="/Account/Logon">Logon</a> to RSVP for this event.
<% } %>
</div>
Kiedy klikam „RSVP do tego wydarzenia” link dostaję 404 eror mówiąc zasób nie można znaleźć:
The resource cannot be found.
Description: HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable. Please review the following URL and make sure that it is spelled correctly.
Requested URL: /NerdDinner/RSVP/Register/24
Version Information: Microsoft .NET Framework Version:2.0.50727.4200; ASP.NET Version:2.0.50727.4205
Kiedy krok do kodu to jest znalezienie Regi sterować metodą poprawnie. Po zabawie z nim usunąłem "AcceptVerbs (HttpVerbs.Post)" z ograniczenia w metodzie Register, a następnie zadziałało. Nie odświeżyło jednak strony, na której właśnie wyświetlono komunikat "Dzięki - do zobaczenia" na nowej pustej stronie. Patrząc na html na stronie ze szczegółami, nie ma formularza wysyłania, więc zastanawiam się, czy kod Ajax potrzebuje czegoś więcej, aby zadzwonić do Posta? Czy jest jakiś znany problem z tą częścią aplikacji Nerd Dinner? Myślę, że aplikacja została napisana w MVC1 i używam MVC2 - czy to powoduje różnicę?
TIA,
Ciaran
Cześć Tahbaza, zwracany tekst powinien zaktualizować element div na stronie szczegółów - UpdateTargetId = "rsvpmsg". Zgodnie z kodem i zrzutami ekranu na tutorialu Scotta Gu poniżej kliknięto link "Rejestruj", a element div został zaktualizowany za pomocą zwróconego tekstu. Nie wiesz, jak działa jego próbka, gdy nie robi posta: –