将URL参数和表单数据一起传递

时间:2010-04-07 02:30:00

标签: jquery asp.net-mvc asp.net-mvc-2

我有以下网址:

http://localhost:49970/Messages/Index/9999

在查看“索引”时,我有一个表单,我使用Jquery将表单数据发布到操作索引(用[HttpPost]解析),如下所示:

查看:

<script type="text/javascript">
    function getMessages() {
        var URL = "Index";
        $.post(
            URL,
            $("form").serialize(),
             function(data) {
                 $('#tabela').html(data);
             }
        );
    }
</script>

 <% using (Html.BeginForm()) {%>

        <%=Html.TextArea("Message") %>

        <input type="button" id="submit" value="Send" onclick="javascript:getMessages();" />

    <% } %>

控制器:

[HttpPost]
public ActionResult Index(FormCollection collection)
{
   //do something...
     return PartialView("SomePartialView", someModel);
}

我的问题:如何在动作索引中获取参数“9999”和表单FormCollection?

PS:对不起我的英语:)

2 个答案:

答案 0 :(得分:0)

您需要在routes集合中声明id。然后,只需在行动中放置一个同名的verible。

public ActionResult Index(int id, string otherPostData...)
{
   //do something...
     return PartialView("SomePartialView", someModel);
}

在此处查看有关MVC网址路由如何工作的详细信息:

http://weblogs.asp.net/scottgu/archive/2007/12/03/asp-net-mvc-framework-part-2-url-routing.aspx

答案 1 :(得分:0)

一种简单的方法是将Id添加到表单值中。

这应该可以解决问题:

<% using (Html.BeginForm()) {%>

    <%=Html.Hidden("Id") %>

    <%=Html.TextArea("Message") %>

    <input type="button" id="submit" value="Send" onclick="javascript:getMessages();" />

<% } %>

如果这不起作用,您需要将Id扔进控制器中的ViewData

另一种方法(可能更干净)是从表单的action属性获取jQuery发布的URL。当你在它的时候,我也会让js不引人注目。

HTHS,
查尔斯