GVKun编程网logo

Asp.netMVC中Ajax.BeginForm上传文件(asp.net mvc 上传文件)

24

在本文中,您将会了解到关于Asp.netMVC中Ajax.BeginForm上传文件的新资讯,同时我们还将为您解释asp.netmvc上传文件的相关在本文中,我们将带你探索Asp.netMVC中Aja

在本文中,您将会了解到关于Asp.netMVC中Ajax.BeginForm上传文件的新资讯,同时我们还将为您解释asp.net mvc 上传文件的相关在本文中,我们将带你探索Asp.netMVC中Ajax.BeginForm上传文件的奥秘,分析asp.net mvc 上传文件的特点,并给出一些关于ASP.NET MVC 3 Ajax.BeginForm和Html.TextBoxFor不反映在服务器上执行的更改、ASP.NET MVC 3 Ajax.BeginForm和Html.TextBoxFor不反映服务器上所做的更改、ASP.NET MVC 3 – Ajax.BeginForm vs jQuery Form Plugin、ASP.NET MVC 4 – Ajax.BeginForm和html5的实用技巧。

本文目录一览:

Asp.netMVC中Ajax.BeginForm上传文件(asp.net mvc 上传文件)

Asp.netMVC中Ajax.BeginForm上传文件(asp.net mvc 上传文件)

 

做一个上传并解压的功能,解压完了回调,解压多少文件。搞了半天用Ajax.BeginForm。各种坑,后来直接放弃

@using (Ajax.BeginForm("UploadFile", "ChaptersAndsections",

            new AjaxOptions()
            {
                HttpMethod = "post",
                OnSuccess = "onSuccess",
                OnFailure = "onFailure",
                OnComplete = "onComplete"
            },
           
            new { data_ajax = "false", enctype = "multipart/form-data"}))
        {

        <div>
            <input type="text" name="bid" value=''@ViewData["id"]'' id="id" hidden="hidden" />
            <label for="file1">文件名称:</label>
            <input type="file" name="fileName" id="file1" required="required" multiple="multiple" />



            <input type="submit" id="ajaxBtn1" value="上传解压压缩包" />
        </div>

        }

  

去掉这个吧,后台获取不到文件名,加上吧不执行回调,这个真。。。(真心想用,但是搞不定)哪个园友可以解决,请留言

换种方法吧

<div>
            <div id="main">
                <h1>请选择要解压的文件</h1>
                <form id="uploadfrm" method="post" enctype="multipart/form-data" action="/ChaptersAndsections/UploadFile">
                    <input type="text" name="bid" value=''@ViewData["id"]'' id="id" hidden="hidden" />
                    <input type="file" name="fileName" id="images" />
                </form>
                <div id="response"></div>
                
                <button onclick="UploadUnZip();">上传并解压</button>
            </div>
            
        </div>

  

function UploadUnZip() {
            var form = document.getElementById(''uploadfrm'');
            var formData = new FormData(form);
            $.ajax({
                url: "/ChaptersAndsections/UploadFile",
                type: "POST",
                data: formData,
                processData: false,
                contentType: false,
                success: function (data) {
                         //这个地方可以填写自己的方法
                 document.getElementById("response").innerHTML = data;
                }
            });
        }

  如下:

后台

 

ASP.NET MVC 3 Ajax.BeginForm和Html.TextBoxFor不反映在服务器上执行的更改

ASP.NET MVC 3 Ajax.BeginForm和Html.TextBoxFor不反映在服务器上执行的更改

我在ASP.NET MVC3中使用Ajax.BeginForm帮助程序提交一个表单,该表单用服务器上设置的表单中的新值替换自己.但是当我使用像Html.TextBoxFor这样的帮助器时,我得到了提交的值,而不是我在服务器上插入模型的值.

例如;我在动作中将SomeValue设置为4并将其显示在文本框中.我将值更改为8,点击提交,并期望在文本框中将值更改回4,但由于某种原因它保持为8.但如果我输出SomeValue而不使用Html助手,则表示4.任何人都有一些关于到底是怎么回事?

我的控制器:

public ActionResult Index(HomeModel model)
{
    model.someValue = 4;
    if (Request.IsAjaxRequest())
        return PartialView(model);
    return View(model);
}
public class HomeModel
{
    public int? SomeValue { get; set; }
}

我的观点(请注意,我的布局页面中没有所有必需的javascript):

<div id="ajaxtest">
@using(Ajax.BeginForm(new AjaxOptions{ InsertionMode = InsertionMode.Replace,UpdateTargetId = "ajaxtest",HttpMethod = "Post" })) {
    @Html.TextBoxFor(model => model.someValue)
    <input type="submit" value="Update" />
}
</div>

解决方法

您可以使用
ModelState.Clear()

在您的控制器方法中,使html助手使用您更改的模型.否则,他们使用表单提交中的值

看看:Asp.net MVC ModelState.Clear

ASP.NET MVC 3 Ajax.BeginForm和Html.TextBoxFor不反映服务器上所做的更改

ASP.NET MVC 3 Ajax.BeginForm和Html.TextBoxFor不反映服务器上所做的更改

我正在使用ASP.NET
MVC3中的Ajax.BeginForm帮助程序来提交一个表单,该表单将自己替换为服务器上设置的表单中的新值。但是,当我使用诸如Html.TextBoxFor之类的助手时,我得到的是提交的值,而不是我插入服务器模型中的值。

例如;
我在操作中将SomeValue设置为4,并在文本框中显示它。我将值更改为8,然后单击“提交”,并希望在文本框中将其更改回4,但是由于某种原因,它仍保持为8。但是,如果我不使用Html帮助程序而输出SomeValue,则会显示4。到底是怎么回事?

我的控制器:

public ActionResult Index(HomeModel model)
{
    model.SomeValue = 4;
    if (Request.IsAjaxRequest())
        return PartialView(model);
    return View(model);
}
public class HomeModel
{
    public int? SomeValue { get; set; }
}

我的视图(请不要在布局页面中包含所有需要的JavaScript):

<div id="ajaxtest">
@using(Ajax.BeginForm(new AjaxOptions{ InsertionMode = InsertionMode.Replace,UpdateTargetId = "ajaxtest",HttpMethod = "Post" })) {
    @Html.TextBoxFor(model => model.SomeValue)
    <input type="submit" value="Update" />
}
</div>

ASP.NET MVC 3 – Ajax.BeginForm vs jQuery Form Plugin

ASP.NET MVC 3 – Ajax.BeginForm vs jQuery Form Plugin

我正在开始一个新的ASP.NET MVC 3项目,并且将要实现一些仅默认读取的屏幕,但允许用户通过点击编辑按钮来编辑信息.我希望这些屏幕是AJAX.我以前使用 jQuery Form Plugin在ASP.NET MVC 2项目上实现类似的屏幕.

我刚刚发现Ajax.BeginForm()的存在,并且想知道是否应该使用它,因为它是内置的,而不是使用jQuery Form Plugin.我已经完成了Google搜索这两种技术的区别,但找不到任何东西.

我想知道的是哪个(或者一个不同的)应该与ASP.NET MVC 3一起使用.

在ASP.NET MVC中实现AJAX表单的最佳实践和库是什么?

Ajax.BeginForm和jQuery Form Plugin有什么优缺点?

解决方法

我会使用表单插件.

在MVC 3中,Ajax帮助器基本上是使用jQuery Ajax实现的. (参见Brad的Wi​​lsons post,在MVC 3中不引人注意的Ajax).使用表单插件的优势在于您可以更好地控制自己的页面,并且不必使用笨重的BeginForm API.

ASP.NET MVC 4 – Ajax.BeginForm和html5

ASP.NET MVC 4 – Ajax.BeginForm和html5

设置:

我已经将ASP.NET MVC 3中的应用程序更新为ASP.NET MVC 4.

该应用程序在MVC 3中运行良好.唯一不适用于MVC 4的是Ajax.Begin形式:表单默认为完整页面请求,而不是异步AJAX请求.

从本质上讲,它是我写的一个向导,但这是无关紧要的. Model.Step.ActionName正确返回一个字符串(参见下面的代码).

代码:

视图中的代码是:

@H_301_19@@{ using (Ajax.BeginForm(Model.Step.ActionName,null,new AjaxOptions { UpdateTargetId = "wizardStep",OnBegin="isValid",LoadingElementId="PleaseWait",OnSuccess="SetFocusOnForm" },new {@name="wizardForm",@id="wizardForm" } )) { //form contents } }

渲染:

我注意到MVC 4中的Ajax.BeginForm使用HTML 5.我展示了MVC 3和MVC 4如何呈现下面的表单之间的区别:

MVC 3:

@H_301_19@<form action="/Solicitors/Company/New/YourDetails" id="wizardForm" method="post" name="wizardForm" onclick="Sys.Mvc.AsyncForm.handleClick(this,new Sys.UI.DomEvent(event));" onsubmit="Sys.Mvc.AsyncForm.handleSubmit(this,new Sys.UI.DomEvent(event),{ insertionMode: Sys.Mvc.InsertionMode.replace,loadingElementId: 'PleaseWait',updateTargetId: 'wizardStep',onBegin: Function.createDelegate(this,isValid),onSuccess: Function.createDelegate(this,SetFocusOnForm) });"> // form contents </form>

MVC 4:

@H_301_19@<form action="/Solicitors/Company/New/LoginDetails" data-ajax="true" data-ajax-begin="isValid" data-ajax-loading="#PleaseWait" data-ajax-mode="replace" data-ajax-success="SetFocusOnForm" data-ajax-update="#wizardStep" id="wizardForm" method="post" name="wizardForm" novalidate="novalidate"> // form contents </form>

我不知道这是否正确,但假设它是.

问题:

然而,问题是没有使用Ajax,只是整页刷新.所以sumat是错的……

问题:

问题是:出了什么问题?!

解决方法

好的,我已经解决了这个问题.

在MVC 3应用程序中,我在web.config中注释掉了以下内容:

@H_301_19@<appSettings> <add key="webpages:Version" value="1.0" /> <!--<add key="ClientValidationEnabled" value="true" /> <add key="UnobtrusiveJavaScriptEnabled" value="true" />--> </appSettings>

这解释了为什么asp.net mvc 3没有渲染html 5.

在新的mvc 4应用程序中,默认设置为ClientValidationEnbled = true且UnobstrusiveJavaScriptEnabled = true,如下所示:

@H_301_19@<appSettings> <add key="webpages:Version" value="2.0.0.0" /> ... <add key="ClientValidationEnabled" value="true" /> <add key="UnobtrusiveJavaScriptEnabled" value="true" /> </appSettings>

所以我的应用程序需要包含以下javascript文件:

@H_301_19@<script src="@Url.Content("~/Scripts/jquery-1.7.1.min.js")" type="text/javascript"></script> <script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script> <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>

它需要将microsoft * .js文件丢弃,即:

@H_301_19@@*<script src="@Url.Content("~/Scripts/MicrosoftAjax.js")" type="text/javascript"></script> <script src="@Url.Content("~/Scripts/MicrosoftMvcAjax.js")" type="text/javascript"></script> <script src="@Url.Content("~/Scripts/MicrosoftMvcValidation.js")" type="text/javascript"></script>*@

我在阅读@Darin Dimitrov对以下问题的回复后想出了这个问题:

Are MicrosoftAjax.js,MicrosoftMvcAjax.js and MicrosoftMvcValidation.js obsolete as of ASP.NET MVC 3?

非常感谢达林.答案值得一读,以启发自己已禁用的两个appSettings的含义.

我们今天的关于Asp.netMVC中Ajax.BeginForm上传文件asp.net mvc 上传文件的分享就到这里,谢谢您的阅读,如果想了解更多关于ASP.NET MVC 3 Ajax.BeginForm和Html.TextBoxFor不反映在服务器上执行的更改、ASP.NET MVC 3 Ajax.BeginForm和Html.TextBoxFor不反映服务器上所做的更改、ASP.NET MVC 3 – Ajax.BeginForm vs jQuery Form Plugin、ASP.NET MVC 4 – Ajax.BeginForm和html5的相关信息,可以在本站进行搜索。

本文标签: