2

我如何从这个查询字符串中提取 House、Car 和 Work 值?

http://'mysite'/Result/Environments?House=1&Car=0&Work=1

然后在下面的 LINQ 语句中赋值。

控制器中的动作方法

public ActionResult Environments()
{
    //int totalSmokers = repository.Results.Where(x=>x.House = 
    return View();
}
4

4 回答 4

2

您应该ActionResult将它们作为参数,就像这样(我假设bool,如果它们是int,将它们更改为int)。

public ActionResult Environments(bool House, bool Car, bool Work)

然后您可以在 LINQ 语句中使用它们,例如:

int totalSmokers = repository.Results
    .Where(x => x.House == House && x.Car == Car && x.Work == Work)
    .Count();


更干净的是,您可以创建一个模型(并在您的视图中返回它,就像您在评论中询问的那样),例如:

public class SmokersModel
{
    public bool House { get; set; }
    public bool Car { get; set; }
    public bool Work { get; set; }
    public int TotalSmokers { get; set; }
}

然后整理您的操作方法,您可以执行以下操作:

public ActionResult Environment(SmokersModel Model)
{
    Model.TotalSmokers = repository.Results
        .Where(x => x.House == Model.House && x.Car == Model.Car && x.Work == Model.Work)
        .Count();

    return View(Model);
}

然后将视图的模型类型更改为SmokersModel

@model SmokersModel
于 2013-05-07T14:32:10.023 回答
1

您可以向您的操作添加参数以检索在查询字符串中传递的值。

public ActionResult Environments(int House, int Car, int Work)
      {
        //int totalSmokers = repository.Results.Where(x=>x.House == 
        return View();
      }

您也可以Request["House"], Request["Car"] or Request["Work"]在函数内部使用它。

于 2013-05-07T14:32:59.213 回答
1

以下示例将查询写入?House=1控制台。

Uri baseUri = new Uri ("http://mysite.com/");
Uri myUri = new Uri (baseUri, "/Result/Environments?House=1&Car=0&Work=1");

Console.WriteLine(myUri.Query);

希望这可以帮助!

于 2013-05-07T14:33:03.873 回答
0

您可以通过Request.QueryString. 有几种方法可以做到这一点。最简单的可能是Request.QueryString["House"],但请记住,这将是一个字符串。QueryString 也有一个AllKeys集合,因此您可以检查它以查看实际提供了哪些值。

于 2013-05-07T14:35:36.830 回答