从查询字符串请求值

时间:2013-05-07 14:30:53

标签: c# asp.net-mvc linq

如何从此查询字符串中提取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 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

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

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"]来获取它。

答案 2 :(得分: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);

希望这有帮助!

答案 3 :(得分:0)

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