Я пытаюсь реализовать небольшое приложение для шаблонов, которое будет генерировать простые html-выходы из XML-источника данных.Asp.net Razor website (v3) code behind - Request is null
Я создал новый веб-сайт 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, это бы усложнило это.
Update: Я понимаю, что я могу добавить вызов шаблон cshtml как:
@{
this.LoadEmployeeById(Request.QueryString);
}
и обрабатывать его из класса, только «кто и как/когда выполняет мой шаблон с рабочим контекстом «Часть неясна для меня.
Что вы пытаетесь сделать, так это то, что вы обычно делаете с WebForms. Есть ли конкретная причина, почему вы просто не идете в этом направлении? Кажется, ваша цель - победить всю цель использования MVC. Возможно, я ошибаюсь, но только моя первоначальная мысль. – cloudstrifebro
@Richard_D: Я прочитал [this] (http://stackoverflow.com/a/5125873/65189) комментарий: «Мы не используем MVC, просто ASP.NET с бритвенными страницами, сопоставленными с модулем URL Rewrite для IIS 7, не ASPX-страницы или ViewState или серверное программирование событий вообще. У него нет дополнительных (ненужных) слоев, MVC помещает в конструкции кода для вызова regex. Меньше для нас больше ». и понравилась идея, и хотел расследовать :) – balint
Ahhh, я вижу. MVC отлично подходит по этой причине - это не заставляет программистов абстрагироваться от HTTP (webforms делает это для вас). Я был более смущен, потому что вы используете код-позади (что делает веб-формы по умолчанию). – cloudstrifebro