ASP .NET MVC RAZOR - 错误的函数调用

时间:2016-03-03 22:05:16

标签: c# asp.net asp.net-mvc asp.net-mvc-4 razor

我有两个单独的视图,每个视图都调用一个上传文件的控制器。它们在我第一次使用它们时都工作正常,但是由于一些未知的原因,当我切换视图时,每个视图中的控制器都被交换了!!我仔细检查,我正确地调用每个控制器。所以我不知道为什么在视图之间交换控制器!

这是我输入文件的地方:

<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>
    }

0 个答案:

没有答案