GVKun编程网logo

asp.net-mvc – mvc 4 beginform with route name

6

本文将分享asp.net-mvc–mvc4beginformwithroutename的详细内容,此外,我们还将为大家带来关于ASP.NETMVC3–Ajax.BeginFormvsjQueryFor

本文将分享asp.net-mvc – mvc 4 beginform with route name的详细内容,此外,我们还将为大家带来关于ASP.NET MVC 3 – Ajax.BeginForm vs jQuery Form Plugin、ASP.NET MVC 4 – Ajax.BeginForm和html5、ASP.NET MVC 4-Ajax.BeginForm和html5、asp.net-mvc – .net Mvc 3 Ajax.BeginForm,获取表单元素的相关知识,希望对你有所帮助。

本文目录一览:

asp.net-mvc – mvc 4 beginform with route name

asp.net-mvc – mvc 4 beginform with route name

我正在使用@ Html.BeginForm()在MVC中生成一个表单,但我的表单必须发布到我的确认操作,这将呈现确认视图.

确认操作很容易到达,但用户也将重定向到那里,我的映射路由如下所示:

routes.MapRoute(
        name: "RegisterConfirmationRoute",url: "register/confirmation",defaults: new { controller = "Account",action = "ConfirmRegistration" }
    );

我是以错误的方式来做这件事的吗?
我不知道如何让@Html.BeginForm使用routeName来呈现表单的action属性?

问候,
雅克·

解决方法

你想要Html.BeginRouteForm(“RegisterConfirmationRoute”).

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.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正确返回一个字符串(请参见下面的代码)。

代码:

视图中的代码是:

@{     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使用HTML5。我在下面显示了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是错的…

问题:

问题是:怎么了?

答案1

小编典典

好,我已经解决了。

在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=trueUnobstrusiveJavaScriptEnabled=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对以下问题的答复后,我想出了这一点:

从ASP.NET MVC
3开始,MicrosoftAjax.js,MicrosoftMvcAjax.js和MicrosoftMvcValidation.js是否已过时?

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

asp.net-mvc – .net Mvc 3 Ajax.BeginForm,获取表单元素

asp.net-mvc – .net Mvc 3 Ajax.BeginForm,获取表单元素

我正在尝试使用带有OnBegin和amp;的表单dom元素. Mvc中Ajax.BeginForm帮助器的OnComplete例程.

目前我有这个:

@using (Ajax.BeginForm("Contact","Home",new AjaxOptions { OnBegin = "handleOnBegin" }))

但是在OnBegin / OnComplete处理程序中,我想使用表单dom元素 – 这是可能的吗?我已经检查了传递给那些处理程序的参数,我看不到任何东西.

function handleOnBegin(a,b){
  var f = <get form>;
  animateForm(f);
}

我甚至尝试用处理程序传递’this’,但这似乎只是传递了XHR对象(或者类似的东西)……而且,我不愿意传递id并添加更多代码,因为我确信有一种更简单的方法.

解决方法

表单的ID作为Ajax.BeginForm的第4个参数:

@using (Ajax.BeginForm("Contact",new AjaxOptions { OnBegin = "forms.onBegin",OnComplete = "forms.onComplete" },new { id = "FormName" }))

然后,您可以按ID(#FormName)选择表单.

编辑:

或者看看this question的答案

我们今天的关于asp.net-mvc – mvc 4 beginform with route name的分享就到这里,谢谢您的阅读,如果想了解更多关于ASP.NET MVC 3 – Ajax.BeginForm vs jQuery Form Plugin、ASP.NET MVC 4 – Ajax.BeginForm和html5、ASP.NET MVC 4-Ajax.BeginForm和html5、asp.net-mvc – .net Mvc 3 Ajax.BeginForm,获取表单元素的相关信息,可以在本站进行搜索。

本文标签: