Публикация одной и той же формы для различных действий в зависимости от нажатия кнопки - PullRequest
5 голосов
/ 22 сентября 2011

У меня есть похожий пост на StackOverflow, но, возможно, мое недопонимание более существенное.У меня есть действие Index () и просмотр индекса его рендеринга.В представлении Index () в зависимости от нажатой кнопки необходимо вызвать [HttpPost] Index () или [HttpPost] Search (), потому что я публикую некоторые данные.Является ли единственный способ публикации различных действий с помощью jQuery?Если jQuery является единственным способом, если мои действия возвращают представления (полные HTML-страницы), мне нужно очистить весь элемент документа от $ .post и заполнить его моими представлениями HTML?Я довольно новичок во всем этом, спасибо огромное!

@using (Html.BeginForm())
{
    <input name="startDate" type="text" size="20" class="inputfield" id="datepicker" />
    <a href="#" id="apply_button">...</a>
    <a href="#" id="go_button">...</a>
}


public ActionResult Index(string lang)
{
    return View();
}

//Perhaps this action is needed
[HttpPost]
public ActionResult Index(string lang, string startDate)
{
    return View();
}

[HttpPost]
public ActionResult Search(string lang, string startDate)
{
    return View();
]

Ответы [ 2 ]

14 голосов
/ 22 сентября 2011

Вы можете изменить атрибут действия формы в зависимости от того, какая кнопка была нажата.

например. Чтобы опубликовать действие «Поиск» при нажатии кнопки «Перейти»:

$('#go_button').click(function() {
    $('form').attr("action", "Search");  //change the form action
    $('form').submit();  // submit the form
});
1 голос
/ 02 августа 2016

Дополнительно к принятому ответу, когда вам нужно изменить действие, а также контроллер:

$('#go_button').click(function() {
    $('form').attr("action", "@("Search","OtherControllerName")");  //change the form action
    $('form').submit();  // submit the form
});
...