【问题标题】:Returning custom data along with actionresult from an action method从动作方法返回自定义数据以及动作结果
【发布时间】:2018-08-06 10:07:33
【问题描述】:

我相信很多人都有这个问题,但是我在网上搜索后没有得到任何结果,所以或者搜索关键字不同。

我正在开发一个新的 asp.net mvc web 应用程序,在该应用程序中,我得到了控制器上的 index 操作方法返回的纯模板。稍后在 document.ready 事件处理程序中,我动态构建 ui 并将 dom 元素附加到空白模板,这样就可以正常工作。我的问题是我需要在这里调用 2 个服务器,

1) 从索引操作方法中获取视图

2) 在 document.ready{} 中调用 ajax 来获取我用来构建 ui 的数据。

我想知道是否有任何方法可以将索引操作方法中的数据与空白模板视图一起传回,并使用这些数据在 document.ready 事件处理程序中创建 ui。这会将额外的一次点击保存到服务器。

不使用局部视图的原因是

1) 我们已经在 jquery 中开发了一些功能,并且

2) 在我的组织中,人们认为使用 razor 和局部视图制作功能不会那么灵活,例如在 js 中构建和提升 customevent 是一个很棒的功能,它有助于保持功能与其他功能的松散耦合。 (如有错误请指正)

编辑:我认为一个例子会更好地解释这一点,

假设我需要创建一个用户列表,但整个列表及其复选框选择等功能是由 js 模块构建的。因此,除了空白视图,我还想传递“用户”对象,该对象目前是我的模型中的一个类。

请推荐。

【问题讨论】:

  • 您的索引文件是否已有模型?将必要的数据放入模型中似乎是显而易见的事情……这就是 MVC 模型的用途。不确定你是否真的需要 Partial 视图,除非你想在另一个视图的其他地方重复使用相同的演示文稿
  • 是的,我确实有一个模型类,我传递给视图,但是我如何在客户端传递或访问这些数据,jquery 可以使用这些数据来构建用户界面?因为我认为 return view() 只返回 htlm。对不起,如果这是微不足道的,就从这个开始。
  • 确实如此,但是在构建 HTML 期间,您的视图代码会运行 - 因此您可以访问 Razor 代码中的模型值,您可以使用这些值来构建您的视图并影响最终的 HTML。如果您不理解这一点,请参阅 Microsoft 提供的 MVC 入门教程,它向您展示了此类事物的基本示例。同样,它是 MVC 框架的基础之一,使其有用。
  • 谢谢!我去查一下。
  • 哦,对不起,我明白你的意思,但就像我在查询中提到的那样,我们没有使用剃须刀,而是使用 jquery 在客户端构建 ui,所以使用 razor 构建 html 不是一个选项,因为这里的固有设计。希望能解决这个问题。

标签: asp.net model-view-controller actionresult


【解决方案1】:

你有几个选择:

1) 服务端渲染:

将必要的数据放入模型中似乎是显而易见的事情......这就是 MVC 模型的用途。

在构建 HTML 期间,您的视图代码会运行 - 因此您可以访问 Razor 代码中的模型值,您可以使用这些值来构建您的视图并影响最终的 HTML。因此,在这种情况下,您使用 Razor 构建视图,而不是使用 JS 代码构建它。当然,你仍然可以在页面加载后使用 JS 来更改它,但它会被下载到浏览器中,并且 HTML 已经处于所需的起始状态。

2) 客户端渲染,但预先填充了必要的数据:

如果您宁愿坚持使用现有的客户端渲染代码,您可以使用 Razor 将一些现成的 JSON 注入到 JavaScript 中,以便在第一次运行时将其有效地硬编码到页面中,而不是让通过 AJAX 分别从服务器获取它。

例如,如果您在 C# 中有一些保存数据的对象,您可以将其序列化为 JSON 字符串,然后使用 Razor 将该字符串写入 JS 的正确位置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-03
    • 2015-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-22
    • 1970-01-01
    相关资源
    最近更新 更多