MVC控制器返回给视图一个datatable,在视图中咋遍历显示这个数据表的内容啊

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MVC控制器返回给视图一个datatable,在视图中咋遍历显示这个数据表的内容啊相关的知识,希望对你有一定的参考价值。

MVC的版本是3.0哦。。

参考技术A Action中这样:
ViewBag.Data = ...(DataTable对象)
视图中:
@
DataTable dt = (DataTable)ViewBag.Data;

for(var i=0;i<dt.Rows.Count;i++)

...//写代码。


追问

不好意思,还要再麻烦您一下,这是我的Action

追答

在DataTable dt = ds.Tables[0];下面加这行:
ViewBag.Data = dt;

在视图中这样:
@
DataTable dt = (DataTable)ViewBag.Data;
for(var i=0;i<dt.Rows.Count;i++)
...//写代码。

参考技术B <ul>
<%
DataTable dt = (DataTable)ViewData["data"];
for (int i = 0; i < dt.Rows.Count; i++)

%>
<li>
<%= dt.Rows[i]["姓名"]%>
</li>
<%%>
</ul>
我用的是.net mvc2.0的,其实都一样,就是这个意思。
参考技术C 你得说你用的是什么framework,别人才好回答啊。

使用请求参数将javascript变量传递给spring MVC控制器

【中文标题】使用请求参数将javascript变量传递给spring MVC控制器【英文标题】:Passing javascript variable to spring MVC controller with request param 【发布时间】:2022-01-11 06:47:45 【问题描述】:

是否可以将 javascript 变量发送到控制器端点,然后让控制器返回一个新视图? 我试过使用 requestbody 和 ajax 来做,它可以正确传递变量,但无法加载新视图。

也许有一种方法可以用百里香来做到这一点?

【问题讨论】:

@RequestParam 可用于传递值。也许您可以分享更多信息和一些代码,以便更好地了解您面临的问题。 我有一个控制器方法,我希望从 javascript 函数中传递一个变量。 ``` @GetMapping("/project/task") public String test(@RequestParam long id) // 从任务 id 创建模型,并转到新的视图页面 return "taskpage"; ``` 当点击一个任务(来自谷歌图表 api 的甘特图)时,javascript 函数会检索变量(任务 ID)。 ``` $.ajax( contentType: "application/json", type: "GET", data: taskId url: "/project/task/"+id, ); ``` 没有requestbody(它不会加载新页面)是行不通的 从 Javascript 你在 url 中传递 id。所以你可以使用@PathVariable 在控制器中获取它。 @GetMapping(“project/task/id”) public String test(@PathVariable Long id) @Cozimetzer 这几乎可以工作,除了它仍然不会加载新的 html 页面,而是保持在同一页面上.. 嗯.. 【参考方案1】:

如果您使用的是 Thymeleaf,那么只需通过文件名引用您想要返回给用户的模板。

@Controller
public class YourController 

    @GetMapping("/someUrl")
    public String getTemplate(@RequestParam String templateName)
        return templateName;
    

这将是您需要的最低限度,假设您的模板位于正确的文件夹中 - 默认情况下位于 resources/static。如果前端向后端发送GET (/someUrl?templateName=xyz),它将从您的模板中返回xyz.html。如果没有找到参数中请求的模板,则返回 404。

编辑:通读 cmets,我意识到 @RequestParam@PathVariable 之间可能存在混淆。如果你想使用路径变量来定义模板名称,以便前端可以调用GET (/someUrl/xyz),那么你可以这样做

@Controller
public class YourController 

    @GetMapping("/someUrl/templateName")
    public String getTemplate(@PathVariable String templateName)
        return templateName;
    

以下两者的资源:

https://www.baeldung.com/spring-request-param

https://www.baeldung.com/spring-pathvariable

【讨论】:

以上是关于MVC控制器返回给视图一个datatable,在视图中咋遍历显示这个数据表的内容啊的主要内容,如果未能解决你的问题,请参考以下文章

C# ASP.net MVC Ajax MySQL DATATABLES 列搜索无法将搜索值传递给控制器

asp.net mvc中Controller如何返回DataTable给页面

C# MVC 4 RAZOR - JSON 使用 @foreach 从控制器返回列表到视图

带有for循环的MVC视图仅返回最后一项

.NET MVC中给下拉框填充数据

加载 ASP.Net MVC JSONResult jQuery DataTables