我刚刚开始使用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我已经看过了吗?