将MVC3(Razor)表单转换为Ajax表单

时间:2011-09-19 11:05:15

标签: ajax forms asp.net-mvc-3 razor

我使用HtmlHelper在index.cshtml中有一个MVC3 Razor表单。它可以工作,但是我想用AjaxHelper用Ajax表单替换它(注意:我对Ajax / jQuery仍然不熟悉)。它失败。我的问题:

  1. 我的代码出了什么问题?
  2. 是否有任何好的网站可以解释这种转变?
  3. 如果将视图转换为Ajax处理,是否还需要更改控制器?
  4. 这是我的index.cshtml文件。我对Ajax的试用在MVC3表单下面进行了注释。

    <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery-1.5.1.js")" type="text/javascript"></script>
    
    @using ( Html.BeginForm("UploadFile", "Home", FormMethod.Post, new
    {
        enctype = "multipart/form-data"
    }) )
    {
        @Html.ValidationSummary(true)
        <fieldset>
            <legend>Select a file</legend>
            <input type="file" id="fileupload" name="fileuploadname" />
            <p>
                <input type="submit" value="Upload" id="upload" onclick="javascript:document.getElementById('upload').disabled=true; document.getElementById('upload').value='Uploading...'" />
            </p>
        </fieldset>
    }
    
    @* @using ( Ajax.BeginForm("UploadFile", "Home",
                    new AjaxOptions
                    {
                        InsertionMode = InsertionMode.Replace,
                        HttpMethod = "POST"
                    }) )
    {
        <input type="file" id="fileupload" name="fileuploadname" />
        <p>
            <input type="submit" value="Upload" id="upload" onclick="javascript:document.getElementById('upload').disabled=true; document.getElementById('upload').value='Uploading...'" />
        </p>
    }
    *@
    
    提前谢谢。

1 个答案:

答案 0 :(得分:1)

您无法使用Ajax上传文件。至少不是直接的。

当然few plugins可以为您提供帮助,但它们会在AjaxHelper范围之外进行调整。这只是意味着你必须弄清楚jQuery ,这也是一件好事。这是一个简单而小巧的库,在熟悉它的同时,你很可能会偏离AjaxHelper,而只是使用jQuery(HtmlHelper)。