【问题标题】:asp.net MVC : capture Html.BeginForm with different actionasp.net MVC:用不同的动作捕获 Html.BeginForm
【发布时间】:2011-03-26 23:23:10
【问题描述】:

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

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" 操作(生成视图)总是捕获它。

我做错了什么?

谢谢,

汤姆

【问题讨论】:

    标签: asp.net-mvc forms


    【解决方案1】:

    很奇怪。查看生成的标记以查看

    标记中是否呈现了正确的 URL。

    另外,尝试替代方案:

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

    【讨论】:

    • 标记是正确的(正确的操作出现在 html 源代码的表单标题中),替代方法没有帮助:-(
    【解决方案2】:

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

    我刚刚遇到了同样的问题,也是在创建论坛时,我的快速回复操作不断被我的论坛或线程操作接收。我所做的只是交换一些路线,将帖子和论坛的路线放在较低的位置,然后就成功了。

    希望对你有帮助,

    劳

    【讨论】:

      猜你喜欢
      • 2021-11-01
      • 2010-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-08
      相关资源
      最近更新 更多