Различают разные элементы управления, размещающие одну и ту же форму - PullRequest
0 голосов
/ 20 ноября 2011

У меня есть простая страница с двумя раскрывающимися списками, один для страны и один для городов в этой стране.Когда пользователь выбирает страну в списке, я публикую форму и обновляю список городов соответствующим образом.

Кнопка «Показать» публикует ту же форму.

Я хочу различать пользователя, выбирающего странуи нажмите кнопку Показать (различные действия), как лучше всего это сделать?

controls

Ответы [ 2 ]

0 голосов
/ 20 ноября 2011

Поскольку вы показываете одну и ту же форму с любым из методов, я предполагаю, что вы взяли ее в отдельную функцию и вызываете ее из button_click и dropdown_selectedindexchanged.

Вы также можете передать ему логическое значение, скажем, buttonClicked, так что если пользователь нажал кнопку, он отправит истинное значение, а если он обновил комбинированный список, он передаст ложное значение, а затем в методе showForm () получит если заявление:

private void showButton_Clicked(object sender, EventArgs e)
{
     theCountry = countryDropDown.selectedItem.toString();
     showForm(theCountry, true);
}

private void countryDropDown_SelectedIndexChanged(object sender, EventArgs e)
{
    theCountry = countryDropDown.selectedItem.toString();
    showForm(theCountry, false);
}

private void showForm(string theCountry, bool buttonClicked)
{
    if(button)
    {
        //whatever code you want to run when the button is clicked but not when the combobox is changed
    }
    else
    {   
         // whatever code you want to run when the combobox is changed but not when the button is clicked
    }
//the code that is the same for both
}
0 голосов
/ 20 ноября 2011

Вы можете дать своей кнопке Показать отправить имя:

<button type="submit" name="show">Show</button>

и затем в действии контроллера проверьте наличие параметра show в запросе. Если он присутствует, это означает, что форма была отправлена ​​после нажатия на кнопку Show. В другом случае вам придется использовать javascript и вручную отправить форму, позвонив по номеру .submit() или используя AJAX. Однако в обоих случаях параметр show не будет присутствовать в запросе.

[HttpPost]
public ActionResult Foo(string show)
{
    if (!string.IsNullOrEmpty(show))
    {
        // the form was submitted with the Show button
    }
    else
    {
        // ...
    }
    ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...