在MVC5控制器中创建链接数据库记录

时间:2017-05-24 15:22:51

标签: asp.net-mvc entity-framework

我刚刚开始使用ASP.NET MVC,除了基础知识之外的任何东西都会让我抛弃,所以请耐心等待。

我正在编写一个小应用程序UserVoice,用户可以发布想法,其他用户可以投票支持这些帖子。

我有一个显示特定帖子(建议)细节的视图。在那个View上我有一个标有Vote的按钮,当点击它时,应该在我的数据库的PostVote表中创建一个链接到Post的记录。但是,我无法完成这项工作!这就是我所拥有的:

发布> Details.cshtml

 [HttpPost]
 public ActionResult VoteForPost(int id, Post post)
 {
     if (ModelState.IsValid)
     {
         db.PostVote.Add(new PostVote
         {
             PostID = id,
             VoteTime = DateTime.Now,
             VoteUser = UserHelper.GetUsername()
         });
         db.SaveChanges();                
     }
     return View(post);
 }

PostVoteController.cs

post

我在我的方法中需要PostController参数的唯一原因是因为,据我所知,除非我想使用Ajax,否则我需要使用ActionResult并返回一个View,所以我是试图复制Visual Studio自动生成的http://localhost:58974/PostVote/VoteForPost/1的Edit方法中的代码,并且工作正常。我们的想法是在创建新的PostVote记录后重新加载帖子详细信息视图

我意识到我可能已经写了废话,但我正在努力尝试。当我点击投票按钮时,我被定向到一个网址为@using (Html.BeginForm("VoteForPost", "PostVote", new { id = Model.PostID }, FormMethod.Post)) { <button type="submit">Vote</button> } 的页面,我有点理解,但显然是错误的。我无法弄清楚如何只将新的PostVote记录应该链接的Post的ID作为变量传递,而不是将其作为URL的一部分。显然我收到404错误,因为页面不存在。

更新 好的,感谢发布的评论,我现在已经在我的视图中看到了这个:

http://localhost:58974/PostVote/VoteForPost/1

这可以根据需要成功创建记录,但之后仍尝试将浏览器重定向到<div class="sect2"> <h3 id="_release_8_3">Release 8.3</h3> <div class="sect3"> <h4 id="_qa_test_release_1_2_4_to_take_a_look_at_manifest">QA TEST release 1.2.4 (to take a look at manifest)</h4> <div class="ulist"> <ul> <li> <p><a href="release-manifest-1.2.4.html">Release Manifest</a></p> </li> </ul> </div> </div> <div class="sect3"> <h4 id="_qa_test_release_1_2_3_to_take_a_look_at_manifest">QA TEST release 1.2.3 (to take a look at manifest)</h4> <div class="ulist"> <ul> <li> <p><a href="release-manifest-1.2.3.html">Release Manifest</a></p> </li> </ul> </div> </div> <div class="sect3"> <h4 id="_qa_release_8_3_1">QA release 8.3.1</h4> <div class="ulist"> <ul> <li> <p><a href="release-manifest-8.2.6.html">Release Manifest</a></p> </li> <li> <p>Bugs <a href="link">fixed in this release</a></p> </li> <li> <p>Package updates:</p> <div class="literalblock"> <div class="content"> <pre>user-portal 8.2</pre> </div> </div> </li> <li> <p>Database migration scripts to run:</p> <div class="literalblock"> <div class="content"> <pre>none</pre> </div> </div> </li> </ul> </div> </div> </div> <div class="sect2"> <h3 id="_release_8_2">Release 8.2</h3> <div class="sect3"> <h4 id="_qa_test_release_1_2_4_to_take_a_look_at_manifest_2">QA TEST release 1.2.4 (to take a look at manifest)</h4> <div class="ulist"> <ul> <li> <p><a href="release-manifest-1.2.4.html">Release Manifest</a></p> </li> </ul> </div> </div> <div class="sect3"> <h4 id="_qa_test_release_1_2_3_to_take_a_look_at_manifest_2">QA TEST release 1.2.3 (to take a look at manifest)</h4> <div class="ulist"> <ul> <li> <p><a href="release-manifest-1.2.3.html">Release Manifest</a></p> </li> </ul> </div> </div> <div class="sect3"> <h4 id="_qa_release_8_2_6">QA release 8.2.6</h4> <div class="ulist"> <ul> <li> <p><a href="release-manifest-8.2.6.html">Release Manifest</a></p> </li> <li> <p>Bugs <a href="link">fixed in this release</a></p> </li> <li> <p>Package updates:</p> <div class="literalblock"> <div class="content"> <pre>user-portal 8.2</pre> </div> </div> </li> <li> <p>Database migration scripts to run:</p> <div class="literalblock"> <div class="content"> <pre>none</pre> </div> </div> </li> </ul> </div> </div> </div> 。请注意,创建记录的Controller(PostView.cs)不是首先显示Post Details(即Post.cs)的那个,如何让我的方法让我回到Details View I我已经看过了吗?

0 个答案:

没有答案