2

WebForms3.5アプリケーションのコントロールのコードビハインドを取り除くことを目指しています。再びMVCでの実行方法のバグに悩まされましたが、次のようにして、この方法論に一歩近づきたいと思います。

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

これにより、予想されるパーサーエラーが発生するため、これがMVCプレビューでの修正を待っている問題であったことを思い出し、次のように変更しました。

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

しかし、これも機能しません!MVCチームがこの機能をどのように活用できたのでしょうか。最新のVS2008ServicePackではなく、MVCプロジェクトタイプについて何か特別なことでしたか?

将来のテンプレートにコードビハインドファイルを含めることを諦めて要求する以外に、これを一般的なユーザー制御方法にできるだけ近づけるための最善のオプションは何ですか?

4

2 に答える 2

4

よし、なんとかやり遂げたようだ。用に MVC チームによって実装された PageParserFilter を見た後ViewUserControl<T>、私は自分のDataTemplate<T>目的のために似たようなものを構築することができました。甘い。次の行を使用できるようになりました。

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

そして、ファイルの背後にあるコードなしで、解析します! その過程で何か他のものを壊したことがわかったら、また報告します!

于 2009-07-07T15:32:59.620 に答える
0

WebForms を使用すると、コード ビハインド ページがないと、WebForms を便利にするほとんどすべてが失われます。これは、VS がすべてのrunat="server"コントロールの実際の定義を保持するデザイナー ファイルを自動生成できないためです。

あなたができることは、共通のベースページクラスを持ち、それをジェネリックにすることです:

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

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

これにより、WebForms が行うすべてのドラッグ アンド ドロップ コンポーネントが妨げられずに動作できるようになると同時に、ページ上の厳密に型指定されたモデルにアクセスすることもできます。

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

<% foreach( var item in Model ) { %>
    <!-- do stuff -->
<% } %>
于 2009-07-07T12:00:59.357 に答える