Asp.net mvc MVC/Razor文件上载视图

Asp.net mvc MVC/Razor文件上载视图,asp.net-mvc,asp.net-mvc-4,razor,Asp.net Mvc,Asp.net Mvc 4,Razor,我承认自己是新手,但我有一个观点,我粘贴了一些代码来提供文件上传。该函数可以工作,但如果代码在中,则已有视图的“保存”按钮将停止工作。如果我不得不猜测它与HTML.BeginForm行出现两次有关 这是视图的顶部 @model BrooksSOR.Models.dataOffender @{ ViewBag.Title = "Edit"; } <h2>Edit</h2> <div > &

我承认自己是新手,但我有一个观点,我粘贴了一些代码来提供文件上传。该函数可以工作,但如果代码在中,则已有视图的“保存”按钮将停止工作。如果我不得不猜测它与HTML.BeginForm行出现两次有关

这是视图的顶部

    @model BrooksSOR.Models.dataOffender

    @{
        ViewBag.Title = "Edit";
    }

    <h2>Edit</h2>
    <div >
       <h2>Upload Files in MVC</h2>
           <img src="@Model.Photograph" width="250" height="250"  />*


    @using (Html.BeginForm("FileUpload", "SOR",
        FormMethod.Post, new { enctype = "multipart/form-data" }))
    {
    <input name="uploadFile" type="file" />
    <input type="submit" value="Upload File"/>
    <input type="hidden" name="parmPersonID" value="@Model.PersonID" />

    }
    </div>

    @using (Html.BeginForm())
    {
    @Html.AntiForgeryToken()

    @Html.ValidationSummary(true)

    <fieldset>
      <legend>dataOffender</legend>

           <p>
        <input type="submit" value="Save" />
        <input id="Details" type="button" value="Details" />
    </p>
    </fieldset> 
删除@html.BeginForm

您需要发送的脚本以获取文件和其他一些字段

//Purpose: Form Submit: SAVE Client
        document.getElementById('frmPage').onsubmit = function (e) {
            debugger;
            var file = document.getElementById('fileToUpload').files[0];
            var filename;
            if (file) {
                filename = file.name;
            }
            else {
                filename = "";
            }
            $('#Image').val(filename);
            var formObj = $(this);
            var formURL = '@Url.Action("SaveMethod", "ControllerName")';
            var formData = new FormData(this);
            $.ajax({
                url: formURL,
                type: 'POST',
                data: formData,
                mimeType: "multipart/form-data",
                contentType: false,
                cache: false,
                processData: false,
                success: function (data, textStatus, jqXHR) {
                    debugger;

                    alert("Client saved successfully");
                },
                error: function (jqXHR, textStatus, errorThrown) {
                }
            });
            e.preventDefault(); //Prevent Default action.
        }
这就是设计:

<div>

                            <form id="frmPage" class="form-horizontal">
                                <div class="form-body">

                                    <div class="form-group">
                                        <label id="lblImage" class="col-md-3 control-label">Upload File</label>
                                        <div class="col-md-4">
                                            <input type="file" id="fileToUpload" name="file" />

                                        </div>
                                    </div>



                                <div class="modal-footer" style="margin-top: 0px">
                                    <div class="pull-right">
                                        <button type="submit" id="btnSave" class="btn blue Save">Save</button>
                                    </div>
                                </div>
                            </form>
                        </div>

这里:btnSave是提交类型,因此它将提交特定的表单。名为frmPage的表单将执行我们添加的jquery脚本。

为什么有两个表单????另外,第二个表单没有结束标记“}”,我想你需要告诉你的第二个表单在哪里发布,是的,为什么有两个表单?+第二张表格没有结束标记我怀疑这是复制粘贴错误你必须关闭@using@html.beginform{这里编码}哈哈,就像我说的,我是个新手。我只是偷了上传代码并粘贴了它。我试着把它改成一个actionlink,但是它坏了。我能让上传工作的唯一方法是使用BeginForm,它打破了我的另一个按钮。就像我说的,我是这方面的新手。你能把你偷这段代码的地方的链接贴出来吗@davidondersmithy当他还在努力理解mvc的基础知识时,你却把他一路带到了javascript和ajax上!!+他的问题中没有javascript标签!!是的,我的缺点是,我曾经在那里尝试过基本表单帖子,使用BeginForm的Ajax帖子,但这更容易。所以也许我需要找到我尝试过的地方。我感谢她的努力。抱歉冒犯了你们,尼尔。对你们两个都没有冒犯,但作为一名mvc开发者,我建议plz不要跳过mvc的一部分而跳进其他东西,因为jst mvc有点复杂。至少使用mvc支持的那些功能,它的强大谢谢@davidondersmith