从操作方法返回自定义数据和操作结果

Returning custom data along with actionresult from an action method

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

我正在开发一个新的 asp.net mvc web 应用程序,我在其中获得了控制器上的索引操作方法返回的普通模板。稍后在 document.ready 事件处理程序中,我动态地 build ui 并将 dom 元素附加到空白模板,这工作正常。我的问题是我需要 2 次服务器调用,

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

2) ajax 在 document.ready{} 中调用以获取我用来 uild ui.

的数据

我想知道是否有任何方法可以将索引操作方法中的数据与空白模板视图一起传回,并使用此数据在 [=34= 中创建 ui ] 事件处理程序。这将为服务器节省一次额外的命中。

不使用局部视图的原因是

1) 我们已经在 jquery 和

中开发了一些功能

2) 在我的组织中,人们认为使用 razor 和局部视图来实现功能不会那么灵活,例如,在 js 中创建和引发 customevent 是一个很好的功能,有助于保持功能与其他功能松耦合。 (如有错误请指正)

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

假设我需要创建一个用户列表,但整个列表及其功能(如复选框选择等)都是由 js 模块创建的ui。因此,除了空白视图外,我还想传递 "users" 对象,该对象目前在我的模型中是 class。

请多多指教。

您有两个选择:

1) 服务器端渲染:

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

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

2) 客户端呈现,但已预先填充必要的数据:

如果您更愿意坚持使用现有的客户端呈现代码,您可以使用 Razor 将一些现成的 JSON 注入 JavaScript,这样它就可以有效地硬编码到首次运行时的页面,而不必通过 AJAX.

从服务器单独获取它

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