Javascript 使用Ajax调用提交时的局部视图

Javascript 使用Ajax调用提交时的局部视图,javascript,jquery,ajax,asp.net-mvc,partial-views,Javascript,Jquery,Ajax,Asp.net Mvc,Partial Views,以下是我的jquery代码: <script type="text/javascript"> $("#submitfileform").submit(function () { $.ajax({ type: 'POST', contentType: 'application/html;charset=utf-8', dataType:'html', success

以下是我的jquery代码:

<script type="text/javascript">
    $("#submitfileform").submit(function () {
        $.ajax({

            type: 'POST',
            contentType: 'application/html;charset=utf-8',
            dataType:'html',
            success:function (result) {
                $('#tablepartialview').html(result);
            },
            error:function (xhr, status) {
                alert(status);
            }
        })


        });
</script>

如果可能,请在您的项目中包括以下js

然后你可以用

$("#submitfileform").ajaxSubmit({
        type: 'POST',
        success:function (result) {
            $('#tablepartialview').html(result);
        },
        error:function (xhr, status) {
            alert(status);
        }
           });

在使用MVC时,只需将
Html.BeginForm
切换为使用Ajaxified
Ajax.BeginForm

它允许许多选项,包括指定要更新的目标元素的id(例如“tablepartialview”)

例如
@使用(Ajax.beginnform(“PropertyColumnMap”、“ImportFile”、新的AjaxOptions(){HttpMethod=“POST”、UpdateTargetId=“tablepartialview”}、新的{enctype=“multipart/form data”、@class=“form single col”、id=“submitfileform”}))
{
...
}

您可能需要安装Ajax低调的NuGet包来提供连接,但它非常简单,不需要您为视图编写任何额外的JQuery。

如果我指定这样的url,url:ImportFile/PropertyColumn,它会执行操作,但我无法获取httppostedfilebase。它会给出null。当您使用MVC时,您是否尝试过使用
Ajax.BeginForm
,让它为您完成所有工作?您不需要任何JQuery,因为它提供了Ajax表单提交的所有基本功能。当MVC提供
Ajax时,添加额外的JQuery插件没有多大意义。BeginForm
可以在不添加任何客户端代码的情况下提交基于Ajax的表单。
public ActionResult PropertyColumnMap(FormCollection f, HttpPostedFileBase uploadFile)
        {

            String fileid = Import(uploadFile);



                var excel = new ExcelQueryFactory(Session[fileid].ToString());
                excel.DatabaseEngine = DatabaseEngine.Ace;
                var workSheetName = excel.GetWorksheetNames().Last();
                var assetname = f["assetlist"].ToString();
                Mapping(assetname, workSheetName, fileid);


            return PartialView("PropertyColumnMap");


        }
$("#submitfileform").ajaxSubmit({
        type: 'POST',
        success:function (result) {
            $('#tablepartialview').html(result);
        },
        error:function (xhr, status) {
            alert(status);
        }
           });
@using (Ajax.BeginForm("PropertyColumnMap", "ImportFile", new AjaxOptions(){ HttpMethod = "POST", UpdateTargetId = "tablepartialview"}, new { enctype = "multipart/form-data", @class = "form single-col", id = "submitfileform" }))
{
    <input type="file" name="uploadFile" id="uploadFile" value="" />
    <select id="assetlist" name="assetlist">
        <option>...</option>
    </select>

    <input class="btn btn-primary" type="submit" value="Submit" id="submitfile" />
}
<div id="tablepartialview">
</div>