クラスライブラリへのASP.NET MVCのユーザーコントロールを構築する方法
-
20-08-2019 - |
質問
私は建物だCMS用のプラグインのためのクラスライブラリの中にいくつかのた.ascxコントロールを構築しようとしている。
私のプロジェクトタイプはsystem.web.mvc&友人のために追加の参照を持つ典型的なC#クラスlibaryです。
私の問題は、厳密に型指定されたユーザーコントロールを作成しようとする際に発生します。私のコントロールは次のようになります:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<TagCloudWidget.Models.TagCloudWidgetData>" %>
私は名前空間TagCloudWidget.Models
下に同じプロジェクト内の別のパブリッククラスを持っているにもかかわらず、私はこれを認識する.ascx
ファイルを取得するように見えることはできません。私は名前空間のImports
含めて試してみたが、それは単に名前空間が存在していないと文句を言い。 TagCloudDataクラスファイルは次のようになります:
namespace TagCloudWidget.Models
{
public class TagCloudWidgetData
{
public IList<TagCount> TagCounts { get; set; }
public ContentTypes ContentType;
public string Controller;
public string Action;
public TagCloudWidgetData(IList<TagCount> tagCounts, ContentTypes contentType, string controller, string action)
{
TagCounts = tagCounts;
ContentType = contentType;
Controller = controller;
Action = action;
}
}
}
私が間違ってやっているかを見ることができますか?
以下の提案以来、私はコードビハインドファイルを追加しようとしました。私は私が間違って何を考え出すに近いと思うが、私はまだ解決策を見つけることができませんよ。このプロジェクトでは、私がのSystem.WebとSystem.Web.Mvcへの参照を追加しました。しかし、I型分離コードファイルの使用セクション、「システムを使用して。」、オートコンプリートでも利用可能なオプションとしてのSystem.WebまたはSystem.Web.Mvcは表示されません。彼らは単にディスク上に存在しないようなものです。その他のプロジェクトには、それらを含めるとうまくそれらを参照することができます。私は、これは私の問題の源であると仮定し、私は残りはちょうど場所に分類されますこれを理解たら私は希望に満ちましたよ。アイデア?
解決
私はベータリリースで起動したアプリケーションで同様の問題を抱えていました。作品私が見つけた唯一のものは、コントロールのコードビハインドファイルを作成し、コードビハインドで継承を定義することです。次に制御で、それはあなたのコードビハインドで定義されたクラスを継承しています。 1.0を使用してゼロから構築された新しいプロジェクトでは、私はこの問題を持っていない - しかし、その後、再び、私は私の部分クラスはどちらか、ライブラリで定義されていません。
。他のヒント
成功!どういうわけか、私た.ascxファイルではなく、「コンパイル」のファイルのプロパティで「コンテンツ」とマークされていました。私はそれを固定したら、私は今、必要なアセンブリを参照することができますし、問題なくプラグインを実行/ロード。分離コードファイルにヒントをありがとう!
(更新)私は最後の夜を考え出し他の先端は、そうでない場合、私は「タイプをロードできませんでした...」例外を取得し、私のプラグインはまた、アプリケーションの/ binディレクトリだけでなく、私の/ウィジェットディレクトリでなければならないことです。私は、私は1つのだけの場所でそれを持っている必要がありますが、私が行うとき、私はここに戻って投稿しますASP.NET MVCをアップ配線方法はまだ考え出したていない。