Asp.net Razor网站(v3)代码背后 - 请求为空

时间:2016-05-10 19:13:26

标签: c# asp.net razor

我正在尝试实现一个小模板应用,它可以从xml数据源生成简单的html输出。

我已经创建了一个新的Razor网站,还有一个自定义剃刀视图和一个代码隐藏的类:

Employee.cshtml:

@inherits Employee
@{
   Layout = "~/_SiteLayout.cshtml";
}
<div> @this.Name /*works OK from codebehind */ </div>
<div> @(Request.QueryString["id"] ?? "") /* works OK here */</div>

Employee.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Hosting;
using System.Xml.Linq;

public abstract class Employee : System.Web.WebPages.WebPage
{

   public Employee()
   {
      // load xml, etc.
      string id = Request.QueryString["id"] ?? "default"; // Fails: Request is null
   }

   public GetValue(string id) { ... } // works OK
   public string Name { get { return GetValue("name"); } } // works OK    

}

如果我致电http://localhost:xxx/Employee.cshtml内容生成正常,如果我尝试默认路由http://localhost:xxx/Employee,它也可以正常运行。

是否可以在抽象类中获取Request对象?我不想采用真正的MVC方式,它会使这个过于复杂。

更新:我明白,我可以添加对cshtml模板的调用,如:

@{
   this.LoadEmployeeById(Request.QueryString);
}

并从班级处理它,只是“谁和如何/何时执行我的模板与工作上下文”部分对我来说不明确。

1 个答案:

答案 0 :(得分:0)

好吧,只需在代码隐藏中使用它:

HttpContext.Current.Request.QueryString["id"]

一切都按预期工作。