私は、XMLデータソースから簡単なhtml出力を生成する小さなテンプレートアプリケーションを実装しようとしています。Asp.net Razorウェブサイト(v3)コードの背後に - 要求がnullです
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);
}
とクラスからそれを扱うだけで「誰が、どのように/作業コンテキストと私のテンプレートを実行したとき"私にとっては分かりません。
あなたがしようとしていることは、通常WebFormsで行うことです。あなたがその方向に進んでいない具体的な理由はありますか?あなたの目標は、MVCを使用することの全体的な点を打破しているようです。私は間違っているかもしれませんが、ちょうど私の最初の考えです。 – cloudstrifebro
@Richard_D:私は読んだ[this](http://stackoverflow.com/a/5125873/65189)コメント: "私たちはIIS用のURL書き換えモジュールでマップされているかみそりページでMVC、単純なASP.NETを使用しない7、ASPXページやViewStateやサーバーサイドのイベントプログラミングはありません。余分な(不要な)レイヤーは、正規表現のコード構造にMVCが配置されていません。考えを好きで、調査したかった:) – balint
ああ、そうだ。 MVCはそのような理由から偉大です - それはプログラマーがHTTPを抽象化することを強制しません(ウェブフォームがこれを行います)。コードビハインドを使用しているので、私はもっと混乱していました(WebFormsがデフォルトで行うことです)。 – cloudstrifebro