区分发布相同表单的不同控件

时间:2011-11-20 10:36:36

标签: c# asp.net-mvc-2

我有一个简单的页面,有两个下拉菜单,一个用于国家,一个用于该国家/地区的城市。当用户选择列表中的国家/地区时,我会发布表单并相应地更新城市列表。

“显示”按钮发布相同的表单。

我想区分用户选择国家/地区和点击“显示”按钮(不同的操作),最好的方法是什么?

controls

2 个答案:

答案 0 :(得分:0)

您可以为“显示提交”按钮指定名称:

<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
    {
        // ...
    }
    ...
}

答案 1 :(得分:0)

当您使用任一方法显示相同的表单时,我假设您已将其置于单独的函数中并从button_click和dropdown_selectedindexchanged调用它。

你也可以传递一个boolean say 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
}