gpt4 book ai didi

asp.net-mvc-3 - 根据asp.net mvc3中的下拉列表数据获取列表

转载 作者:行者123 更新时间:2023-12-02 02:17:26 27 4
gpt4 key购买 nike

我的模块中有两个下拉列表。

在一个下拉列表中,我对所有运算符进行了硬编码,例如 <,>,<=,>=,==

在第二个下拉列表中,我对员工的工资进行了硬编码,例如 1000,2000,3000,4000....50000

现在如果我选择<来自一个列表和 2000从第二个列表中单击“提交”按钮,我应该获得工资低于 2000 的员工列表。

我想在 asp.net mvc3 中执行此操作

我怎样才能完成这个任务?我需要为此编写一个存储过程吗?

我创建了如下下拉列表:

viewModel.OperatorsList = new[]
{
new SelectListItem { Value = "<", Text = "<" },
new SelectListItem { Value = ">", Text = ">" },
new SelectListItem { Value = "<=", Text = "<=" },
new SelectListItem { Value = ">=", Text = ">=" },
new SelectListItem { Value = "==", Text = "==" }
};

viewModel.SalaryList = new[]
{
new SelectListItem { Value = "1000", Text = "1000" },
new SelectListItem { Value = "2000", Text = "2000" },
new SelectListItem { Value = "3000", Text = "3000" },

// and so on
};

我用它来在 View 中显示下拉列表:

<%: Html.DropDownListFor(x => x.Operators, Model.OperatorsList)%>

最佳答案

好吧,你可以做类似的事情

假设 viewModel 是...您的 viewModel,并且您有一个具有属性 Salary 的实体 Employee code> (本示例中的 int,在现实世界中可能是一个 decimal)

创建静态帮助器类

public static class MyHelper
{
// a dictionary for your operators and corresponding ExpressionType
public static Dictionary<string, ExpressionType> ExpressionTypeDictionary = new Dictionary<string, ExpressionType>
{
{"<", ExpressionType.LessThan},
{">", ExpressionType.GreaterThan},
{">=", ExpressionType.GreaterThanOrEqual}
//etc
};
//a method to filter your queryable
public static IQueryable<Employee> FilterSalary(this IQueryable<Employee> queryable, int salary, string operatorType)
{
//left part of the expression : m
var parameter = Expression.Parameter(typeof(Employee), "m");
//body is the right part of the expression : m
Expression body = parameter;
//m.Salary
body = Expression.Property(body, "Salary");
//m.Salary <= 1000 (for example)
body = Expression.MakeBinary(ExpressionTypeDictionary[operatorType], body, Expression.Constant(salary));
//m => m.Salary <=1000
var lambda = Expression.Lambda<Func<Employee, bool>>(body, new[] { parameter });
//so it will be queryable.Where(m => m.Salary <= 1000)
return queryable.Where(lambda);
}
}

使用

var queryable = context.All<Employee>();//or something like that, returning an IQueryable<Employee>
queryable = queryable.FilterSalary(viewModel.Salary, viewModel.Operators);

关于asp.net-mvc-3 - 根据asp.net mvc3中的下拉列表数据获取列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16542968/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com