问题标签 [ajax.beginform]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - Ajax.Begin 表单和重新加载 PartialView
我有一种情况,我使用 Ajax.BeginForm() 将一些数据(评论表单)发布到控制器方法。然后,此控制器方法使用实体框架将一些信息写入数据库(只要 ModelState 有效)。
作为表单的一部分,我使用 OnSucess 重载,在表单发布后执行 javascript 函数。这个函数,基本上调用了另一个控制器方法(它返回一个局部视图——在这种情况下是注释列表)。
我的问题是,新添加的注释不包含在控制器操作返回的视图中,尽管我知道它存在于数据库中。
这使我有两个可能的选择:
- htmlhelper 表单的 OnSucess() 函数在控制器方法实际返回之前执行。
- 实体框架正在处理数据。
在 2 的情况下,我不知道实体框架曾经缓存数据,除非被明确告知这样做。所以我假设它是1。
因此,为了进一步调查,我修改了 OnSucess 方法和控制器操作。
我的表单定义如下:
我的控制器动作被定义为(为清楚起见省略了细节):
最后,客户端方法定义为:
返回值为 0 时,调用函数 reloadBlogComments()。
但是以上的修改,证明了我上面提到的第一个假设(1)实际上是错误的。在控制器返回值之前无法执行成功函数。所以我完全不知道为什么新添加的评论没有与其他评论一起返回。
我的 reloadBlogComments() 函数定义如下:
即使使用延迟调用 reloadBlogComments() setTimeout(function () { reloadBlogComments(); }, 3000);
也无法获得一致的值。
我在哪里错了?
asp.net-mvc - Ajax.BeginForm 总是触发 OnSuccess 方法,即使数据不正确
我正在尝试将表单提交给控制器操作并根据 OnSuccess 或 OnFailure 处理响应。问题是,即使数据无效并且我未能通过 ModelState.IsValid 测试,也会调用 OnSuccess 方法。应该调用 OnFailure 方法。
我的观点:
我的控制器动作:
我的视图模型:
因此,如果我在 CategoryName 字段中输入超过 75 个字符的字符串,我可以看到该表单未通过 ModelState.IsValid 测试,并且视图被发回,并带有“类别名称必须小于 75 个字符”的注释。错误信息。但它不是触发 OnFailure 事件,而是触发 OnSuccess 事件。为什么?
提前致谢。
partial-views - 使用 Ajax.BeginForm 将数据发布到具有完整站点名称的控制器操作
我想将 jQuery 对话框中打开的部分视图中的数据发布到具有全名的控制器操作,如下所示:
而不是这个:
@using (Ajax.BeginForm(" SendMail ", " Ui ", (new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "email-dialog", OnSuccess = "onEmailSuccess" })))
我想在下面:
@using (Ajax.BeginForm(" http://www.MyWebsite.com/Ui/SendMail ", (new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "email-dialog", OnSuccess = "onEmailSuccess" })))
任何想法 ?
javascript - Ajax .BeginForm 在 IE9 中返回空白视图
MVC4 C#
我在整个应用程序中都使用 Ajax.BeginForm,它运行良好。当我创建并测试 ChkNum 视图时,它工作得很好。突然它停止工作了,我不知道为什么。它在其他视图中仍然有效,但在 ChkNum 视图中,当 post 操作中的 ModelState.IsValid 测试失败并返回视图时,返回的页面是空白的(我得到页眉和页脚但没有正文)。适当的脚本随站点一起加载并在所有其他视图中工作。
ChkNum 视图:
ChkNum 动作:
我已经检查了几次代码并将其与工作操作和视图进行了比较,并没有发现任何问题。我在返回的 PartialView 处设置了一个断点,它正确地通过了 CkNmFrm。
我想不出我在应用程序中更改的任何其他可能导致此问题的内容。
在我的智慧结束这一点。非常感谢任何帮助。
更新: 我使用的是 IE 9。我刚刚在 Chrome 中尝试过,问题就消失了。所以现在的问题是为什么它在除 ChkNum 之外的多个视图中都有效,而且问题是 IE 特有的?
ajax - mvc ajax.beginform 不适用于局部视图
我一直在尝试让级联下拉菜单在 asp.net mvc4 中工作......现在我从 ajax.beginform 开始......稍后我可能会直接使用 jquery......
我的问题是第一个(轨道)ajax.beginform 被调用,它调用控制器,然后它指向第二个部分(轨道)......但是当 SelectRailPartial.cshtml 渲染时它会这样做一个完整的视图......它不是用 div 标记作为替换的渲染......我已经尝试了 ajaxControls 中的各种值来指定替换等......它们似乎没有任何区别......
我怀疑我的问题可能出在我所包含的 javascripts 中......我已经把它全部剥离了一些我知道我需要保持简单......有人能发现我做错了什么吗?请....
在我的(移动)控制器中,我有以下两种方法:
我的 LoadRailVehicle.cshtml
在 xSelectTrackPartial.cshtml 中:
在 xSelectRailPartial.cshtml 中
这是我通过 _viewstart 获得的 _layout.cshtml
ajax - 如何将每个元素的 ID 从 Ajax 表单发送到操作?
我需要那个,我点击哪个项目,把它Id
付诸GetProduct()
行动。我使用hidden
了元素,但它不起作用:
我哪里错了?我该如何发送Id
?
c# - MVC4 Ajax.BeginForm 不替换 UpdateTargetId
关于 Ajax.BeginForm 没有正确更新目标元素的问题有很多关于返回部分视图的问题:
mvc4 ajax 更新同一页面
ASP.NET MVC 4 - Ajax.BeginForm 和 html5
MVC 4 (razor) - Controller is返回一个局部视图但整个页面正在更新
MVC 4 Ajax 没有更新页面内的 PartialView
但是,所有这些都可以通过手动写出 jQuery ajax 或包含丢失的 javascript 文件来回答。
相关控制器代码:
在我的布局中,我引用了这些 jQuery 文件。此外,我已验证该页面正在输出正确的路径,并且它找到了正确的文件。我试过切换 and 的顺序unobtrusive-ajax.min.js
,validate.min.js
但没有成功。
此外,在我网站的根 web.config 和我的 View 文件夹中的 web.config 中,我包括:
我不知道还能去哪里看。没有抛出 javascript 错误,并且控制器被正确命中,返回 PartialViewResult。HTML 中的 Form 元素填充了所有正确的data-
属性。
javascript - AJAX 请求完成后调用 PartialView 中定义的 JavaScript 函数?
这是我的部分观点:
当我提交表单并收到响应时,我收到 JavaScript 错误:
c# - Submit Form with Complex DataType to Controller
This is my model
Model
Controller
Form using MVC that submits to controller
How do i build the object XViewModel to pass back to the controller. i have them in three different variables i have tried to do this dataString = { XPersonList:xpersonContent, XContent: xContent, CommentEnabled: true }; but its not working..
asp.net-mvc - 使用来自不同控制器的 [HttpPost] 在回发所有控制器的操作时查看表单调用
我知道也许标题听起来有点奇怪,但我相信我的问题确实很奇怪。我有一个带有 Razor 视图引擎的 ASP.NET MVC 4 应用程序(这是我的第一个 MVC 实际应用程序)。
我有一个布局视图,我在其中渲染两个部分视图,如下所示:
Login 控制器中的每个操作都只呈现一个局部视图:
只是为了举例说明(两者的构建方式相同),登录部分视图包含这样的 ajax 表单:
来自 Login 控制器(表单的目标)的 Login 操作使用以下属性进行签名(值得一提并注意 HttpPost 之一):
到目前为止,一切都很好......一切都很完美 - 登录和注册操作都没有任何问题。
当我在与主布局一起加载的视图中有 @Html.BeginForm() 时,我想谈论的问题。例如,如果我有这样一个纯粹而简单的形式:
连同控制器 CaptionExtendedController:
所以,最后,在我最终生成的 html 文件中,我将有 3 个表单 - 2 个用于登录和注册 (ajax),还有一个从最后一个视图生成的简单表单。请记住,所有三种形式都是独立的(意味着它们不是另一种形式)。
问题是每次我从最后一个表单中按下“发送”按钮时,所有使用我视图中的 [HttpPost] 属性签名的控制器(登录、来自 LoginController 的注册和来自 CaptionExtendedController 的索引)都会被调用。
为什么???为了进行临时修复,我从 Login 和 Register 操作中删除了 [HttpPost] 属性,现在它可以工作了,但我认为这不正确。
拜托,有人可以向我解释为什么会发生这种情况,并最终指出我解决此问题的正确方向吗?
先感谢您。