5

Web サイトの Razor テンプレート エンジンで ASP.NET MVC 3 を使用しています。現在、次のようなファイルのアップロードを許可しています。

<form action="/File/Upload" method="post" enctype="multipart/form-data">
    <label for="file">Upload a file:</label>
    <input type="file" name="file" id="file" /> 
    <input type="submit" name="submit" value="Submit" />
</form>

しかし、進行状況バー、複数ファイルの選択などを可能にするNeatUploadなどのサードパーティ コントロールを使用したいと考えています。

ドキュメントでは、次のように使用されているコントロールを示しています。

<%@ Register TagPrefix="Upload" Namespace="Brettle.Web.NeatUpload"
         Assembly="Brettle.Web.NeatUpload" %>
<Upload:InputFile id="inputFileId" runat="server" />

いくつかのコード ビハインドを使用します。

Razor エンジンがこの構文を好まないのは当然です。サードパーティのコントロールを使用する別の方法はありますか、それとも運が悪いのでしょうか?

4

6 に答える 6

4

Web フォームで動作するサード パーティ製のコントロールは、純粋なMVC アプリケーションと実際には互換性がありません。そうは言っても、特定の場所では Web フォームを利用し、他の場所では MVC を利用して、ハイブリッド タイプのソリューションを使用できる場合があります。それは私が個人的にすることではありませんが、あなたならできます。

Scott Hanselman によるこの投稿を参照してください。

ただし、Razor ページで Web フォーム コントロールを使用しても機能しません。

于 2011-03-28T16:39:30.497 に答える
1

特に NeatUpload の場合 (これは素晴らしいことです!)、静的な HTML ページで JavaScript を使用して非常に大きなファイルをアップロードできるようになりました。明らかに、これは、使用するビューエンジンに関係なく、MCV でも同様に機能します:)

http://www.brettle.com/NeatUpload-1.3/dotnet/docs/Manual.html#3.11.Using%20NeatUpload%20from%20JavaScript%7Coutline

したがって、より一般的な解決策は、「ユーザー コントロールの開発者に MCV 互換バージョンへの更新を依頼する」ことです。

編集: 上記は変更しませんが、NeatUpload は現在http://neatupload.codeplex.com/でホストされていることに注意してください。

于 2011-06-10T22:46:17.383 に答える
0

コントロール コンテンツのレンダリングだけが必要で、スクリプトやポストバックなどの登録を気にしないと仮定すると、これを行うことができます。

独自の HtmlTextWriter を作成し、それに出力を書き込み、その文字列を Razor でレンダリングします。これは基本的に@VeeTheSecondからのアイデアであり、実践に還元されます:

@{
    System.Web.UI.WebControls.Label label = new System.Web.UI.WebControls.Label()
    {
        Text = "Hello World!"
    };

    HtmlString renderedControl;

    using (StringWriter w = new StringWriter())
    {
        using (HtmlTextWriter htmlW = new HtmlTextWriter(w))
        {
            label.RenderControl(htmlW);

            renderedControl = new HtmlString(w.ToString());
        }
    }
}
<div>
    @renderedControl
</div>
于 2016-04-27T17:06:01.190 に答える
0

Razor ビュー エンジンは WebForms コントロールをサポートしていません。MVC で動作するように特別に設計されたライブラリを見つける必要があります。

于 2011-03-29T01:38:47.557 に答える
-2

コントロールを <form runat="server"> タグに配置してみてください。

于 2011-03-28T16:40:32.123 に答える