【问题标题】:Asp.Net Ajax send ViewModel to ControllerAsp.Net Ajax 将 ViewModel 发送到控制器
【发布时间】:2023-03-04 11:40:02
【问题描述】:
这里有点问题,
我有一个基于表格的日历视图,该视图每天都有一个 ajax 链接,该链接会向用户呈现一些特定于日期的表单以设置所选日期。
然后我想在打开的部分视图上选择特定日期的数据并使用 ajax 保存它们,但我还需要传递页面模型中包含的一些信息,例如选定的日期和月份、年份等。
当我点击一天时加载的部分视图,将是用户选择一些医院值班信息的地方,如值班开始时间,结束时间,医生将成为负责值班,在Model页面上,有医院ID,值班的年月日。
那么如何将表单数据和页面模型发送到将数据保存在数据库中的控制器?
谢谢。
【问题讨论】:
-
您需要显示一些代码,以便我们可以看到您当前在做什么,但一种选择是使用FormData (refer this answer) 序列化表单,然后附加其他数据 -例如formData.append('someData' @Model.someValue);
标签:
c#
jquery
asp.net
ajax
asp.net-mvc
【解决方案1】:
我认为至少有两种方法可以做到这一点。
首先是在服务器端。
当你点击主页面链接时,传递子页面需要的主页面模型数据。url like controller/action?a=1&b=2... 1和2是你的主页面模型数据。你可以得到这些数据通过添加操作方法参数来实现子操作。然后您可以将它们传递给子视图使用模型、视图数据、视图包
第二个在客户端。
您可以将主页模型数据放入 js var(或者简单地认为,隐藏输入),然后单击链接并显示子页面,子页面是主页的一部分,因此您可以阅读 js var in child page.then你可以做一些js程序来显示页面中的js数据
所以,将数据从主页面传递给子动作,或者子页面通过js获取主页面数据
【解决方案2】:
那么如何将表单数据和页面模型发送到将数据保存在数据库中的控制器?
你可以做一个 ajax 帖子,而不是做一个表单帖子
$.ajax({
url: 'Controller/Action',
type: 'POST',
data: JSON.stringify({
'postData': postData
}),
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: SuccessHandler,
error: ErrorHandler,
});