我有两个单独的视图,每个视图都调用一个上传文件的控制器。它们在我第一次使用它们时都工作正常,但是由于一些未知的原因,当我切换视图时,每个视图中的控制器都被交换了!!我仔细检查,我正确地调用每个控制器。所以我不知道为什么在视图之间交换控制器!
这是我输入文件的地方:
<div class="options">
<input type="button" id="importexcel" name="importexcel" class="k-button" value="Select Excel File" />@*@T("Admin.Common.ImportFromExcel")" />*@
</div>
using(Html.BeginForm("GetFile", "Product", FormMethod.Post, new { EncType = "multipart/form-data" }))
{
<br />
}
<div id="importexcel-window" style="display:none;">
@using (Html.BeginForm("GetFile", "Product", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
@Html.AntiForgeryToken()
@Html.HiddenFor(x => x.Id)
<table style="text-align:left;">
<tr>
<td colspan="2">
<em>@T("Admin.Catalog.Products.List.ImportFromExcelTip")</em>
</td>
</tr>
<tr>
<td>
@T("Admin.Common.ExcelFile"):
</td>
<td>
<input type="file" id="importexcelfile" name="importexcelfile" />
</td>
</tr>
<tr>
<td colspan="2">
<input type="submit" class="k-button" value="@T("Admin.Common.ImportFromExcel")" />
</td>
</tr>
</table>
}
</div>
<script type="text/javascript">
$(document).ready(function () {
$("#importexcel").click(function (e) {
e.preventDefault();
var window = $("#importexcel-window");
if (!window.data("kendoWindow")) {
window.kendoWindow({
modal: true,
width: "400px",
title: "@T("Admin.Common.ImportFromExcel")",
actions: ["Close"]
});
}
window.data('kendoWindow').center().open();
});
});
</script>
这是相应的控制器:
[HttpPost]
public ActionResult GetFile(int Id, HttpPostedFileBase importexcelfile)
{
/* read data from file */
var file = System.Web.HttpContext.Current.Request.Files[0];
FileChoosen = true;
FilePath = importexcelfile;
if (file.ContentLength > 0)
{
/* load and show data */
var fileName = Path.GetFileName(file.FileName);
var path = Path.Combine(Server.MapPath("~/Administration/Content/Excel/"), fileName);
file.SaveAs(path);
}
return RedirectToAction("Edit", new { id = Id });
}
如上所述,我在另一个视图中使用另一个输入控制器,使用不同的名称:(注意它与顶部的输入控制器完全相同,但使用不同的名称“GetXML”和“importXMLfile”
这是控制器
[HttpPost]
public ActionResult GetXML(int Id, HttpPostedFileBase importXMLfile)
{}
这是我输入的地方:
<div id="importexcel-window" style="display:none;">
@using (Html.BeginForm("GetXML", "Product", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
@Html.AntiForgeryToken()
@Html.HiddenFor(x => x.Id)
<table style="text-align:left;">
<tr>
<td>
@T("Admin.Common.ExcelFile"):
</td>
<td>
<input type="file" id="importXMLfile" name="importXMLfile" />
</td>
</tr>
<tr>
<td colspan="2">
<input type="submit" class="k-button" value="@T("Admin.Common.ImportFromExcel")" />
</td>
</tr>
</table>
}