用户可以使用多个提交按钮是asp.net网页

时间:2014-11-10 14:18:57

标签: asp.net razor

@{

    var db = Database.Open("DataExample");
    var sql = "Select * from FenixProducts";

    if(IsPost){
        if(Request["button"].Equals("Filter1")){
            sql = "Select * from FenixProducts where TorchLumens > 1200";
        }
        if(Request["button"].Equals("Filter2")){
            sql = "Select * from FenixProducts where TorchLumens < 200";
        }
    }
    var productResult = db.Query(sql);
}

@foreach(var x in productResult){
    @ProductHelpers.fenixTorchGenerateProcuct(x.TorchName, x.TorchLumens, x.TorchRange, x.TorchPrice)
}

<form action="" method="post" style=" clear: left;">
    <button type="submit" name="button" value="Filter1">Filter1</button>
    <button type="submit" name="button" value="Filter2">Filter2</button>
</form>

这是一个好习惯吗?我计划在同一表格中使用多个按钮,并根据点击的按钮过滤产品。

2 个答案:

答案 0 :(得分:0)

使用多个按钮并不是一个坏习惯。没有必要限制,但是,您应该将后端代码与视图分开,并确保您的页面易于使用。

在您的情况下,两个按钮可以解决您的问题,但如果您需要启用许多可能的自定义方案,那么也可以通过selectinput标记自定义搜索。

答案 1 :(得分:0)

它可以用于演示页面,或者你可以轻松实现它。

但在实际项目中做这件事并不是一个好主意。这将成为你维持这个项目的噩梦。

  1. 您正在混合业务逻辑,视图中的数据库访问。
  2. 如果您希望将来使用第三个过滤器怎么办?再添一个按钮?
  3. 您可以使用单选按钮或下拉列表作为该表单的输入,并将该输入发送回处理程序,根据输入值处理逻辑。 然后将您的处理程序移动到另一个文件中,将表单发布到该文件,以分离责任。

    如果您正在处理webform项目,请在.cs文件中编写逻辑,如果您正在处理mvc项目,请在控制器中编写逻辑