Asp.net mvc 窗体操作未命中MVC控制器方法

Asp.net mvc 窗体操作未命中MVC控制器方法,asp.net-mvc,kendo-ui,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>

我想用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>

请注意,这只是初稿。欢迎提出任何改进建议。

我认为在您的情况下,按钮不是submit类型的,这就是为什么它没有点击控制器操作的原因。请尝试以这种方式设置submit按钮:

@(Html.Kendo().Button()
  .Name("btnAddAttachment")
  .HtmlAttributes( new {type = "submit"} )
  .Content("Submit"))
因为@AbbasGaliyakot comment在comment部分为用户工作,所以我也将它包括在这里


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

我认为在您的情况下,按钮不是submit类型,这就是为什么它没有点击控制器操作的原因,请尝试以这种方式设置submit按钮:

@(Html.Kendo().Button()
  .Name("btnAddAttachment")
  .HtmlAttributes( new {type = "submit"} )
  .Content("Submit"))
因为@AbbasGaliyakot comment在comment部分为用户工作,所以我也将它包括在这里


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

请尝试此操作。这会有帮助

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

}

谢谢

请试试这个。这会有帮助

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

}


谢谢

只需在控制台中查看由生成的html@Html.Kendo().Button().Name(“btnAddAttachment”).Content(“Submit”)您确定它没有命中该方法吗?或者你的意思是
文件
为空吗?不点击allI使用kendo的upload组件的方法,至少点击了方法,但文件为空。将方法参数更改为
公共操作结果保存(HttpPostedFileBase DeliveryNoteFile)
(这是控件的名称,请参见控制台中由…@html.Kendo().Button()生成的html。名称(“btnaddatatchment”).Content(“提交”)你确定它没有命中方法吗?或者你的意思是
文件
为空?没有命中方法我使用了剑道的上传组件,至少命中了方法,但文件为空。将方法参数更改为
公共操作结果保存(HttpPostedFileBase DeliveryNoteFile)
(哪一个是公司的名称control@user3180965...try上面的答案将起作用。如果问题仍然存在,则注释…尝试更改它,没有更改。仍然没有点击为按钮生成的methodhtml:Submit@user3180965...instead对于剑道按钮,只需尝试简单的按钮,因为它非常奇怪……只需尝试将表单操作作为action='/Order/Save'.@user3180965@user3180965...try上面的答案将起作用。如果问题仍然存在,则注释…尝试更改它,没有更改。仍然没有点击为按钮生成的methodhtml:Submit@user3180965...instead对于剑道按钮,只需尝试简单的按钮,因为它非常奇怪……只需尝试以action='/Order/Save'.@user3180965的形式给出表单操作,您的答案是co请更正,但正如您所看到的,发问者正在使用带有url.action的html表单标记,这将为表单标记创建正确的操作,如果我们使用提交按钮,则无需使用jquery提交表单。我希望您没有使用MVC区域,如果是这样,您需要指定如下所示:您的答案是正确的,但正如您所看到的,发问者是正确的使用带有url.action的html表单标记,这将为表单标记创建正确的操作,如果我们使用submit按钮,则无需使用jquery提交表单。我希望您没有使用MVC区域,如果需要,您还需要指定如下所示: