2016-05-10 12 views
0

私は、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); 
} 

とクラスからそれを扱うだけで「誰が、どのように/作業コンテキストと私のテンプレートを実行したとき"私にとっては分かりません。

+0

あなたがしようとしていることは、通常WebFormsで行うことです。あなたがその方向に進んでいない具体的な理由はありますか?あなたの目標は、MVCを使用することの全体的な点を打破しているようです。私は間違っているかもしれませんが、ちょうど私の最初の考えです。 – cloudstrifebro

+0

@Richard_D:私は読んだ[this](http://stackoverflow.com/a/5125873/65189)コメント: "私たちはIIS用のURL書き換えモジュールでマップされているかみそりページでMVC、単純なASP.NETを使用しない7、ASPXページやViewStateやサーバーサイドのイベントプログラミングはありません。余分な(不要な)レイヤーは、正規表現のコード構造にMVCが配置されていません。考えを好きで、調査したかった:) – balint

+0

ああ、そうだ。 MVCはそのような理由から偉大です - それはプログラマーがHTTPを抽象化することを強制しません(ウェブフォームがこれを行います)。コードビハインドを使用しているので、私はもっと混乱していました(WebFormsがデフォルトで行うことです)。 – cloudstrifebro

答えて

0

も、ちょうど分離コードでこれを使用します。予想通り

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

、すべてが動作します。

関連する問題