asp.net-mvc – 关于Ajax调用Register动作方法的书呆子晚餐错误
我是MVC的新手,我正在MS MVC2中实现Nerd Dinner MVC示例应用程序.我在第10步,“Ajax启用RSVP接受”.我添加了新的RSVP控制器并添加了Register操作方法,如下所示:
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!"); } } 我添加了对两个Ajax脚本库的引用,并将下面的代码添加到Details视图中,如文章中所述: <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> 当我点击“RSVP for this event”链接时,我得到404错误,说无法找到资源: 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 当我进入代码时,它正确地找到了Register动作方法.在玩了之后,我从Register方法的约束中删除了“AcceptVerbs(HttpVerbs.Post)”,然后它就可以工作了.但是它没有重新加载页面,只是在新的空白页面上显示“谢谢 – 我们会在那里看到你”的消息.查看详细信息页面中的html没有表单提交,所以我想知道Ajax代码是否需要更多的内容才能使调用成为Post?这部分书呆子晚餐应用程序是否存在已知问题?我认为该应用程序是用MVC1编写的,我使用的是MVC2 – 这是否会产生差异? TIA, 夏兰 解决方法
您的操作的这一部分解释了为什么您只是“看到你”的消息:
return Content("Thanks - we'll see you there!"); 这就是归还的全部. 你开始使用404的原因是使用了actionlink: Ajax.ActionLink(... 这将创建一个URL链接,一个GET而不是一个POST,而AcceptVerbs(HttpVerbs.Post)将强制不匹配.你应该提交一份表格来做一个帖子: using (Ajax.BeginForm("Controller","Action",new AjaxOptions { UpdateTargetId = "f1" } )) { %> <div id="f1"> <!-- form fields here --> <input type="submit" /> </div> <% } %> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ADO.NET数据表与数据读取器
- asp.net-mvc – 如何使@ Html.EditorFor禁用
- ASP.NET大师:使用会话变量有哪些优点/缺点?
- asp.net-mvc – 使用NHibernate.AspNet.Identity
- 如何在ASP.NET应用程序中有效地缩放和裁剪图像?
- asp.net-web-api – 默认使用ASP.NET Web API返回json
- asp.net-mvc – asp.net mvc 4 – 谁调用_ViewStart.cshtml
- azure – Kestrel运行哪个框架?
- asp.net – 如何将数据保存在MVC控制器的内存中?
- ASP.NET MVC与Webforms与HTTP处理程序(.ashx) – 哪个是最轻
- asp.net-mvc – 是否有可能在ASP.NET MVC中对一些
- asp.net-mvc – 创建自定义RouteBase类
- 使用asp.net和vb.net从sql server导出到excel文件
- asp.net-mvc – 使用ASP.NET MVC Ajax调用的全局
- IIS7返回的日期标头是错误的
- asp.net-mvc-3 – 视图或控制器中的if或else语句
- asp.net – Sitecore – 以编程方式清除用户的缓
- 设置ASP.NET(Visual Studio)服务器配置的默认页面
- asp.net – 授权web.config中的属性对授权节点
- asp.net – system.web.compilation.debug与syst