加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

ASP.NET MVC 4 – Ajax.BeginForm和html5

发布时间:2020-12-16 07:32:20 所属栏目:asp.Net 来源:网络整理
导读:设置: 我已经将ASP.NET MVC 3中的应用程序更新为ASP.NET MVC 4. 该应用程序在MVC 3中运行良好.唯一不适用于MVC 4的是Ajax.Begin形式:表单默认为完整页面请求,而不是异步AJAX请求. 从本质上讲,它是我写的一个向导,但这是无关紧要的. Model.Step.ActionName
设置:

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

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

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

代码:

视图中的代码是:

@{ 
    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:

<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:

<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中注释掉了以下内容:

<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,如下所示:

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

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

<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文件丢弃,即:

@*<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的含义.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读