在BeginForm中上传文件

时间:2016-03-25 08:31:00

标签: c# jquery ajax asp.net-mvc

我想在单击文件上传提交按钮后在BeginForm中添加文件上传功能我想指向另一种上传该文件的方法,而不是相同的BeginForm操作。

如何使用Ajax函数

执行此操作
@using (Html.BeginForm("Add_Field_Values", "Home", new { Product_ID = ViewBag.Product_ID , FieldID = ViewBag.FieldID }, FormMethod.Post))
{
    @Html.AntiForgeryToken()

                        if (condition)
                        {     
                                <input type="file" name="files">   
                                <input id="adddetails" type="button" value="Upload File to Server">
                        } 



            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="Save Details" class="btn btn-success" />
            </div>

}

<script>
 $().ready(function () {

        $("#adddetails").click(function () {

            $.ajax({
                type: "POST",
                url: "/FileUpload/Financing_Product_Feature_Upload",
                data: 
                {
                       ....
                },
                success: function (data) {

                }

            });
        });
</script>

然后我在FileUpload控制器类

中有如下控制器方法
    [HttpPost]
    public ActionResult Financing_Product_Feature_Upload(HttpPostedFileBase files, string productid)
    {

我的问题是定义可以上传文件的上述ajax来电

请告知

1 个答案:

答案 0 :(得分:0)

那么你可以做到,但不幸的是在我看来你无法将参数传递给控制器​​动作,比如productId,但是你可以做什么,你可以为这个值设置一个隐藏的字段。

您的ajax表单应如下所示:

$("#adddetails").click(function (evt) {

    $.ajax({
        type: "POST",
        url: "/FileUpload/Financing_Product_Feature_Upload",
        contentType: false,
        processData: false,
        data: new FormData($('.myForm').get(0)),
        success: function (message) {
            alert(message);
        },
        error: function () {
            alert("There was error uploading files!");
        }
    });
});

文件输入应该是这样的:

@using (Html.BeginForm("Add_Field_Values", "Home", FormMethod.Post, new { @class = "myForm"})){
<input type="file" name="files" />
@Html.Hidden("ProductId", ViewBag.Product_ID);
}

控制器应如下所示:

[HttpPost]
public ActionResult Financing_Product_Feature_Upload()
{
var files = Request.Files;
var productId = Request.Params["ProductId"].ToString();
}

我希望这对你有用,你得到我答案的主要概念,祝你好运;)