asp.net – 为什么我的验证在MVC3中的帖子之前触发了get请求?
我有一个MVC3视图,使用户可以创建几个不同的东西.在父视图中,这样做的表单通过
jquery ui选项卡分解,如下所示:
<div id="tabs"> <ul> <li><a href="#tabs-1">New Thing 1</a></li> <li><a href="#tabs-2">Different New Thing</a></li> </ul> <div id="tabs-1">@Html.Action("CreateNewThing","NewThingController")</div> <div id="tabs-2">@Html.Action("CreateDifferentThing","DifferentThing")</div> <div></div> </div> <script type="text/javascript"> $(function () { $("#tabs").tabs(); }); </script> 在部分视图中,我有: @model NewThingViewModel @using (Html.BeginForm("CreateNewThing","NewThingController",FormMethod.Post,new { id = "frmCreateNewThing" })) { ... 使用输入字段,提交按钮等.这似乎运作良好:它呈现所有内容并发布正确的控制器操作方法. 但是我现在正在验证中接线,我遇到了问题. 在控制器中,它渲染视图如下: public ActionResult CreateNewThing(NewThingViewModel model) { ... initializing model fields,drop downs etc. return PartialView("CreateNewThing",model); } 我有一个单独的帖子方法,如下所示: [AcceptVerbs(HttpVerbs.Post)] public ActionResult CreateNewThing(NewThingViewModel newThingViewModel,FormCollection collection) { ..... } 样品型号: public class NewThingViewModel { [Required] [StringLength(50)] [Display(Name = "Display Name:")] public string DisplayName { get; set; } } 问题是,当页面首次出现时,模型中标记为[必需]的字段显示为红色,并且验证摘要显示页面最初显示时无效. I.E.在用户在初始加载中输入任何内容之前,它的行为就像它已被发布,甚至在文本框中放置任何内容. 我知道第一个非帖子CreateNewThing正在触发,因为我可以在调试器中捕获它,我知道第二个不在初始加载上. 什么会导致我的验证在Get上触发? 是因为Html.Action的工作方式以及我将部分视图渲染到另一个视图的事实? 我在web.config中使用UnobtrusiveJavaScriptEnabled和ClientValidationEnabled = true. 我找不到其他遇到这个问题的人.其他每个例子似乎都有效,然后我再找不到一个例子,其中视图被分成jquery ui标签中包含的三个部分. 我该如何解决? 解决方法
您的GET控制器操作上没有方法参数.您可以初始化一个空模型并将其传递给视图,但您不需要将模型传递给该方法
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 使用ModelState.Remove处理ModelState是否正
- ASP.NET如何知道单击哪个Button以引发其事件
- 如何将现有的ASP.NET应用程序升级到ASP.NET vNext
- 初识ABP vNext(4):vue用户登录&菜单权限
- asp.net – Web服务中的循环引用
- asp.net – 如何在两个网站中访问同一个Session?
- asp.net – IIS返回找不到.mp4文件的404
- asp.net-mvc – 在不显眼的验证过程中使用parseJSON的语法错
- 实体框架4 – ASP.NET MVC 3应用程序使用Ninject,实体框架4
- asp.net – 这是一个RESTFUL MVC Web服务吗?