2012-01-16 19 views
1

MVC 2を使用して内部プロジェクト管理ダッシュボードを開発しています。要件の1つは、ローカルサーバーのいずれかの既存のドキュメントにリンクすることです。サーバーに、ファイルを選択し、追加をクリックすると、そのプロジェクトのビューにリンクが含まれます。ここで私は(私は簡潔にするために外にいくつかの詳細を残してきた)持っているものです。ASP .NET MVC 2 - ドキュメントへのリンクを参照して追加します

モデル:

public class AddDocumentModel 
{ 
    public HttpPostedFileBase DocumentLink { get; set; } 
} 

ビュー:

<% 
using (Html.BeginForm(MVC.ProjectDetails.Actions.AddDoc(this.Model.ProjectID), 
       FormMethod.Post, new { enctype = "multipart/form-data" })) 
{%> 

<%=Html.TextBoxFor(a => a.DocumentLink, 
        new { type = "file", style = "width:100%;"})%> 

    <input type="submit" value="Add Document Link" /> 
<%} %> 

はコントローラー:

[AcceptVerbs(HttpVerbs.Post)] 
public virtual ActionResult AddDoc(AddDocumentModel docModel) 
{ 
    var model = _projectManagementService.AddDocumentLink(
         docModel.DocumentLink.FileName); 
} 

ので、あなたが見ることができるように、私はファイルアップロードのためのhtmlテキストボックスを使用していますが、実際にはアップロードしていません。ちょうどパスとファイル名を取得しようとしています。インク。しかし、セキュリティ上の制約のため、これはInternet Explorerでしか動作しません。他のブラウザーでは手を出せません。また、ユーザーがマップされたドライブを使用する場合、完全なパスは使用されないため、サーバーは直接サーバーに移動する必要があります。

誰もがこれを行う別の方法を考えることができますか?私はアップロード機能によって提供されるブラウズ機能を使用できるようにしたいが、制約に縛られることはできない。

私が考えることができる唯一の(技術の低い)ソリューションは、ユーザーが明示的にリンクをテキストボックスに貼り付けることです。しかし、もっとフレンドリーなものを好むだろう。

ありがとうございます。最初に投稿された質問もありますので、親切にしてください:-)

+0

を書き出すように感じませんでしたあなたのWebアプリケーションのブラウジングコントロール - おそらくSystem.DirectoryServicesからの機能を使ってサーバファイルシステムからいっぱいになったTreeView。 –

+0

Sergey、ありがとうその名前空間で一周して、<%=Html %> '怠惰のために何か –

答えて

2

私があなただったら、新しいファイルをアップロードするか、既存のファイルの場所に貼り付けることができます。あなたがやっていることをするためにファイルアップロード要素を再利用しようとする理由はありません。私はその後、私はいくつかの種類を実装していたものと同じような状況にあった場合

フォームの例は、(<%=Html %>

<form> 
    <div> 
     <input type="radio" name="AddDocumentType" value="New" /> 
     <label for="NewDocument">Upload New Document</label> 
     <input type="file" id="NewDocument" name="NewDocument" /> 
    </div> 
    <div> 
     <input type="radio" name="AddDocumentType" value="Link" /> 
     <label for="LinkDocument">Link To Existing Document</label> 
     <input type="text" id="LinkDocument" name="LinkDocument" /> 
    </div> 
    <input type="submit" value="Add Document Link" /> 
</form> 

モデル

public enum AddDocumentType 
{ 
    New, 
    Link 
} 

public class AddDocumentModel 
{ 
    public AddDocumentType AddDocumentType { get; set; } 
    public HttpPostedFileBase NewDocument { get; set; } 
    public string LinkDocument { get; set; } 
} 
+0

+1を使うことができるかどうかを見てください... – gdoron

関連する問題