表单操作不符合MVC控制器方法

时间:2014-09-02 08:54:24

标签: asp.net-mvc kendo-ui

我想使用Html表单进行简单的文件上传。我认为我有以下内容:

       <form action='@Url.Action("Save", "Order")' method="post" enctype="multipart/form-data" id="attachmentForm">
        <div >
            <label style="text-align: left;">Delivery note:</label>
        </div>
        <div style="float:left; ">
            <input type="file" name="DeliveryNoteFile" id="DeliveryNote" style="width: 400px;" />
        </div>
        <div style="float:right;  margin-top:10px; margin-left:5px; margin-bottom:0px;">
            @(Html.Kendo().Button()
                .Name("btnAddAttachment")
                .HtmlAttributes( new {type = "submit"} )
                .Content("Submit"))
        </div>            
    </form>

现在这是我的控制器方法。控制器名称:订单,方法名称:保存。 为什么它没有达到我的控制器方法?

  [HttpPost]
    public ActionResult Save(HttpPostedFileBase file)
    {
        if (file != null)
        {
            var fileName = Path.GetFileName(file.FileName);
                var physicalPath = Path.Combine(Server.MapPath("C:\\Attachments"), fileName);
                file.SaveAs(physicalPath);

        }

        return Content("");
    }

请注意,这只是初稿。任何改善这一点的建议也是受欢迎的。

2 个答案:

答案 0 :(得分:2)

我认为在你的情况下你的按钮不是提交类型这就是为什么它没有按照控制器操作只是尝试以这种方式提交按钮:

@(Html.Kendo().Button()
  .Name("btnAddAttachment")
  .HtmlAttributes( new {type = "submit"} )
  .Content("Submit"))

@ AbbasGaliyakot评论在评论部分为用户工作,所以我也在这里包括它。

将控制器操作参数名称从file更改为DeliveryNoteFile

答案 1 :(得分:2)

请试一试。这会有所帮助。

@using (Html.BeginForm("Save", "Order", FormMethod.Post, new { enctype = "multipart/form-data", id = "attachmentForm" }))
{
    <div >
            <label style="text-align: left;">Delivery note:</label>
        </div>
        <div style="float:left; ">
            <input type="file" name="DeliveryNoteFile" id="DeliveryNote" style="width: 400px;" />
        </div>
        <div style="float:right;  margin-top:10px; margin-left:5px; margin-bottom:0px;">
            @(Html.Kendo().Button()
                .Name("btnAddAttachment")
                .HtmlAttributes( new {type = "submit"} )
                .Content("Submit"))
        </div> 

}

在JS中你需要绑定提交按钮的点击功能,如下所示:

$('#btnAddAttachment').bind('click', function () {
     $('#attachmentForm').submit();
});

谢谢!