Передача параметра URL и данных формы вместе - PullRequest
0 голосов
/ 07 апреля 2010

У меня следующий URL:

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

И при просмотре «Index» у меня есть форма, и я отправляю данные формы в действие Index (декорируется с помощью [HttpPost]) с помощью Jquery, например:

Вид:

<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 голосов
/ 07 апреля 2010

Простой способ - добавить Id к значениям формы.

Это должно сработать:

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

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

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

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

<% } %>

Если это не сработает, вам нужно будет выбросить Id в ViewData в контроллере.

Еще один способ сделать это (который может быть чище) - получить URL, который jQuery публикует, из атрибута действия формы. Пока ты в этом, я сделаю js ненавязчивым.

HTHS
Charles

0 голосов
/ 07 апреля 2010

Вам необходимо объявить идентификатор в коллекции маршрутов. Затем просто добавьте в действие ужасного с тем же именем.

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

Узнайте здесь, как работает MVC-маршрутизация URL:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...