我正在尝试实现一个小模板应用,它可以从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);
}
并从班级处理它,只是“谁和如何/何时执行我的模板与工作上下文”部分对我来说不明确。
答案 0 :(得分:0)
好吧,只需在代码隐藏中使用它:
HttpContext.Current.Request.QueryString["id"]
一切都按预期工作。