2009-07-07 4 views
2

WebForms 3.5アプリケーションでコントロールのコードビハインドを取り除こうとしています。再び、それはMVCで行うのかのバグにかまれ、私が行うことで近いこの方法論の手順を取得したいのですが:WebForms 3.5に強力に型付けされたASCX?

<%@ Control Language="C#" Inherits="Core.DataTemplate<Models.NewsArticle>" %> 

これは私にあなたが期待パーサーエラーが発生しますので、私は戻って思い出しましたこれはMVCプレビューで修正を待っている問題で、それを変更する場合:

<%@ Control Language="C#" Inherits="Core.DataTemplate`1[[Models.NewsArticle]]" %> 

しかし、これはどちらか動作しません! MVCチームがこの能力をどのように活用できるのでしょうか?最新のVS2008 Service Packではなく、MVCプロジェクトの種類について特別なものでしたか?

コードを後ろに置いてファイルを作成することをあきらめることは、できるだけ一般的なユーザーコントロールの方法に近づけるためのベストな選択肢は何ですか?

+0

Webフォームを曲げようとしているようです。個人的にWebフォームを実行するとき、私はWebフォームの方法を行います。つまり、ファイルの背後にコードがあることです。 ASP.NET MVCを行うとき、私はMVCのやり方をします。一方を他方に曲げようとすると、問題を尋ねています。 – RichardOD

+0

私はWebFormsを曲げようとしていますが、不必要なファイルを取り除くことができるのであれば、あまりにも多くのことを聞いてはいけないと思います。特に、私が非常によく似た文脈で働いているのを見ている文法があるときは、それは完璧なものになります。 – tags2k

答えて

4

まあ、私はそれをやったように見えます。 ViewUserControl<T>のMVCチームによって実装されたPageParserFilterを見てから、私自身のDataTemplate<T>の目的で同様のものを構築することができました。甘い。

<%@ Control Language="C#" Inherits="Core.DataTemplate<Models.NewsArticle>" %> 

ファイルをコードなしで解析することができます。私はプロセスで何かを壊したことがわかったら私は報告します!

0

Webフォームを使用すると、VSは、すべてのrunat="server"コントロールの実際の定義を保持するデザイナーファイルを自動的に生成できないため、コードビハインドページを使用しなくても役立ちます。あなたは何ができるか

は、共通のベースページクラスを持っている、と一般的なことを確認です:

public class DataTemplate<T> : Page { 
    public T Model {get;set;} 
} 

public partial class MyCodeBehindClass : 
    DataTemplate<Models.NewsArticle> { 
    ... 
} 

これは、Webフォームが妨げられることなく動作するようにしていること、すべてのドラッグアンドドロップコンポーネントのものを可能にする、またあなたに可能にしながら、ページで強く型付けされたモデルにアクセスしてください:

<%@ Control Language="C#" Inherits="MyCodeBehindClass" %> 

<% foreach(var item in Model) { %> 
    <!-- do stuff --> 
<% } %> 
+0

ああ申し訳ありませんが、私の質問はおそらくこれで明確ではなかったが、私は既にDataTemplate :カスタムASCX内で使用しようとしているUserControlクラス、および部分クラスを使用しないでください。 – tags2k

+0

ああ、どうしてWebFormsの内容を残しているのですか?なぜあなたは、VSクラスの部分クラスを生成せずにWebFormsコンポーネントを使用することができないので、MVCに行くのですか? – Keith

+0

これは私ができるだけ整理しようとしている既存のWebFormsアプリケーションです。したがって、アーキテクチャ全体を変更することはできません。フロントエンドの世代のほとんどは抽象化されているので、私がメンテナンスを心配する必要があるのは、MasterPagesと、WebFormsビットを必要としないこれらのテンプレートだけです。 – tags2k

関連する問題