ASP .NET MVC 2 - 浏览并添加文档链接

时间:2012-01-16 17:36:12

标签: asp.net-mvc asp.net-mvc-2

我正在使用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文本框进行文件上传但实际上没有上传,只是尝试获取路径和文件名并将其用作链接。但是由于安全限制,这只能在IE中使用,因为没有其他浏览器可以让你走上这条路。此外,如果用户使用映射驱动器,它将无法工作,因为不会使用完整路径,因此他们必须直接导航到服务器。

有人能想到另一种方法吗?我希望能够使用上传功能提供的浏览功能,但不受限制。

目前我能想到的唯一(低技术)解决方案是让用户明确地将链接粘贴到文本框中。但是更喜欢更友好的东西。

提前致谢。首先发布的问题,所以要善良: - )

1 个答案:

答案 0 :(得分: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; }
}