我有一个模型如下
public class request_dtls
{
[Key]
public long request_detail_id { get; set; }
public string first_name { get; set; }
public string last_name { get; set; }
[InverseProperty("request_dtls")]
public virtual IList<dtls_doc> dtls_doc { get; set; }
}
public class dtls_doc
{
[Key]
public long doc_line_id { get; set; }
public long request_detail_id { get; set; }
public string file_name { get; set; }
public string document_name { get; set; }
[NotMapped]
public HttpPostedFileBase UpFile { get; set; }
[ForeignKey("request_detail_id"), InverseProperty("dtls_doc")]
public virtual request_dtls request_dtls { get; set; }
}
在视图中,多个文档将添加到每个详细信息并成功保存。文件路径将保存详细级别,dtl_doc表包含文档名称等。
现在我需要检索上传的文件并在另一个视图中显示。
我写了如下视图
@if (Model != null)
{
if (Model.dtls_doc != null)
{
for (int i = 0; i < Model.dtls_doc.Count; i++)
{
<tr>
<td>
@Html.HiddenFor(model > Model.dtls_doc[i].request_detail_id);
@Html.HiddenFor(model > Model.dtls_doc[i].doc_line_id);
@Html.TextBoxFor(model => model.dtls_doc[i].document_name)</td>
<td>
@Html.TextBoxFor(model => model.dtls_doc[i].UpFile, new { type = "file" })
<input type="hidden" name="dtls_doc.Index" value="@i" />
</td>
</tr>
}
它给出了以下屏幕
如何携带与每个&#34; chooseFile&#34;相对应的物理存储文件?按钮如下
被修改
<table id="doc" class="table table-striped table-hover table-bordered">
<tr>
<th style="width:200px">
Document Name
</th>
<th style="width:500px">
File to Upload
</th>
<th style="width:6px">
</th>
</tr>
@if (Model != null)
{
if (Model.dtls_doc != null)
{
for (int i = 0; i < Model.dtls_doc.Count; i++)
{
<tr>
<td>
@Html.HiddenFor(model > Model.dtls_doc[i].request_detail_id);
@Html.HiddenFor(model > Model.dtls_doc[i].doc_line_id);
@Html.TextBoxFor(model => model.dtls_doc[i].document_name)</td>
<td>
@Html.ActionLink("Download File", "download_file", new { id = Model.dtl_doc_dtls[i].doc_line_id })
<input type="hidden" name="dtls_doc.Index" value="@i" />
</td>
</tr>
}
这给出了以下结果...对于现有的它将是一个下载的链接,它正在下载。 对于新的,它将是文件类型
新添加行的模板
<table id="Newdoc" style="display:none">
<tr>
<td><input type="text" name="dtls_doc[#].document_name" value /></td>
<td>
<input type="file" name="dtls_doc[#].UpFile" />
<input type="hidden" name="dtls_doc.Index" value="%" />
</td>
<td><input id="doc_delete" class="doc_delete" value="X" type="button"></td>
</tr>
</table>
用于添加新行的Jquery
$("#N").click(function (event) {
event.preventDefault();
var index = (new Date()).getTime();
var clone = $('#Newdoc').clone();
clone.html($(clone).html().replace(/\[#\]/g, '[' + index + ']'));
clone.html($(clone).html().replace(/"%"/g, '"' + index + '"'));
var html = clone.html();
$("#doc").append(clone.html());
});
用于删除行的Jquery
$('#doc').on('click', 'td input.doc_delete', function () {
$(this).closest('tr').remove();
});