3

HTML ファイルに HTML を、cs ファイルにコードを含めることができるが、HTML ファイルのトークンに Intellesense を使用できるように、ページのような独自の「コード ビハインド」を構築したいと考えています。(それが .NET ページ クラスの機能であることはわかっていますが、もっと軽量なものが必要です)

例: .html ファイル内:

<%@ Directive classname="HTMLSnippet" %>
<html>
   <body>
     <div>[%message%]
   </body>
</html>

および .cs ファイルで

public class MyClass : HTMLSnippet
{
   public class MyClass () {
      snippet.message = "message goes here"
   }
}

だから私の質問は、HTMLSnippet クラスを作成して、そのメンバーが自動的に作成され、トークンを .html ファイルに追加すると Intellesense に具体的に表示されるようにする方法です。

私は現在、.netがdesigner.csファイルを作成することでそれを行っており、基本的にページのすべての要素を使用してクラスを構築していることを知っています. Intellesense に表示されます。ありがとう!

明確化 私はまだこれをハンドラーとして使用していません。これを使用して、トークンを含む HTML スニペットを、プロパティを持つオブジェクトとしてコードで使用できるようにしたいと考えています。ほとんどカスタムコントロールのようです。私がしなければならないことは、.html ファイルにトークンを入力するのを待つ VS アドインを作成し、各トークンのメンバーを含む .cs ファイルを自動的に作成することだと思います。

4

5 に答える 5

2

まず、肥大化を望まないのであれば、ASPX ページにはそれほど多くの肥大化はありません。@ Page ディレクティブ タグ以外のほとんどすべてを取り除くことができます。クライアント側で肥大化させたくない場合は、ビューステートをオフにすることもできます。そのため、車輪を再発明する理由はありません。

肥大化を大幅に減らしたい場合は、ASP.NET MVC を検討してください。私の推測が正しければ、Microsoft はカンファレンスで何かをリリースするのが好きなので、MIX に RTM が表示されます。そうでなければRC2なのでRTMもそう遠くない。ASP.NET MVC では、ASPX ページは単なるビューであるため、非常に薄い場合があります。

これに独自の方法で取り組みたい場合は、HTTP ハンドラーで必要なことを行って型を処理できます。サーバー上で標準の .html ファイルを提供できないようにするため、.htm または .html のままにしておくことはできません。これは良くありません。これにより、戦いの半分に過ぎないハンドリングの問題が解決されます。

Intellisense を処理する最善の方法がわかりません。1 つの方法は、Stagner のブログ ( http://weblogs.asp.net/joestagner/archive/2008/05/12/add-custom-javascript-intellisense.aspx ) に示されているように、参照することです。

カスタム拡張機能でこれを試したことはありませんが、動作するはずです。独自のカスタム XSD (XML) ファイルを作成することもできます。ala: http://vyasashutosh.blogspot.com/2007/05/providing-custom-intellisense-in-vsnet.html

個人的には、ASPX モデルを使用して、必要のないものを間引きます。必要に応じてテンプレートを叩くこともできるので、すべてのページでこれを行うことができます. @ page ディレクティブを取り除くことはできませんが、それがあまりにも肥大化している場合は、ASP.NET が使用したいモデルであるかどうか確信が持てません。

于 2009-03-09T17:07:46.450 に答える
1

私はあなたに同意するわけではありませんが、コードビハインドで保護された変数を作成し、試している方法でそれらを使用できます。

コードビハインド:

protected string myVar1 = "Hello World"

HTMLで:

<html>
   <body>
     <div><%= myVar1 %>
   </body>
</html>

繰り返しますが、この方法で作業することは一歩後退していることを明確にしたいだけであり、そうしないことをお勧めします.

于 2009-03-09T17:10:37.050 に答える
1

MVC フレームワークを試してください。

それ以外の場合は、PHP、DJANGO、ROR、またはテンプレートを完全にサポートするその他のフレームワークを使用してください。

于 2009-03-09T17:12:11.400 に答える
0

または、xml マークアップ IE を使用してインライン スクリプト タグの必要性を排除しようとする asp.net に spark を使用してみてください。

<% foreach( string key in collectionOfItems.Keys ) %>
<div><% =key %></div>
<% } %>

のようなものになります

<foreachcollectionOfItems.Keys >
<div>$key</div>
</foreach>

私の例はがらくたで間違っていることに注意してください。しかし、あなたはその考えを理解しています。グーグルで...スパーク

于 2010-06-14T22:27:56.297 に答える