asp.net MVC:用不同的动作捕获Html.BeginForm

时间:2010-11-16 21:08:38

标签: asp.net-mvc forms

我通过我的控制器渲染视图,如下所示:

public ViewResult Forum([DefaultValue(0)]int id)
        {
            ForumMessagesViewModel forumMsgs = new ForumMessagesViewModel(_articles.GetAllForumMessages());
            return View(forumMsgs);
        }

在该视图中.aspx,我想启用邮件发布。所以我创建了以下表单:

<% using (Html.BeginForm("AddForumMessage", "Home"))
       { %>
        <fieldset>
            <legend>add message</legend>

                    <label id="NameLabel">name:</label>
                    <%= Html.TextBoxFor(model => model.newMessage.MessagePosterName) %>      

                    <label id="TitleLabel">subject:</label>
                    <%= Html.TextBoxFor(model => model.newMessage.MessageSubject)%>

                    <label id="ContentTextLabel">contents:</label>
                     <%= Html.TextBoxFor(model => model.newMessage.MessageContents)%>

                    <%= Html.HiddenFor(model => model.parentMessageID, 0) %>


                <div>
                    <input type="submit" value="submit"/>
                </div>

        </fieldset>


    <%} %>

这个想法是用这个Action(在家庭控制器中)捕获上面的表格:

[HttpPost]
public ActionResult AddForumMessage(ForumMessagesViewModel newMessage)
{
    /* Add new forum message to DB */


    return Forum(0);

}

但是"Forum"操作(生成视图)总是会捕获它。

我做错了什么?

谢谢,

汤姆

2 个答案:

答案 0 :(得分:0)

怪异。查看生成的标记,以查看是否在&lt; form&gt;中呈现了正确的URL。标签

另外,尝试替代方案:

<% Html.BeginForm("..", ".."); %>

<% Html.EndForm(); %>

答案 1 :(得分:0)

不确定你是否已经解决了这个问题,因为很久以前,但也许其他人有同样的问题。

我遇到了同样的问题,同时创建了一个论坛,我的快速行动一直被我的论坛或线程动作所吸引。我所做的只是在一些路线上交换,将线程和论坛的路线放在较低的位置,这就行了。

希望有所帮助,

Lauw