我有一个简单的页面,有两个下拉菜单,一个用于国家,一个用于该国家/地区的城市。当用户选择列表中的国家/地区时,我会发布表单并相应地更新城市列表。
“显示”按钮发布相同的表单。
我想区分用户选择国家/地区和点击“显示”按钮(不同的操作),最好的方法是什么?
答案 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
}