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

时间:2018-08-06 10:07:33

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

我确信很多人都遇到了这个问题,但是在搜索网络和搜索引擎或搜索关键字不同之后,我没有得到任何结果。

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

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

2)在document.ready {}内部进行ajax调用,以获取用于构建ui的数据。

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

不使用局部视图的原因是

1)我们已经在jquery和

中开发了一些功能

2)在我的组织中,人们认为使用剃刀和局部视图来实现该功能并不那么灵活,例如,在js中构建和引发customevent是一项很棒的功能,可以使该功能与其他功能保持松散耦合。 (如果我们错了,请更正)

编辑:我认为有个例子可以更好地说明这一点,

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

请提出建议。

1 个答案:

答案 0 :(得分:0)

您有两种选择:

1)服务器端呈现:

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

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

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

如果您想坚持使用现有的客户端渲染代码,则可以使用Razor将一些现成的JSON注入JavaScript中,这样,当它首次运行时就可以有效地将其硬编码到页面中,而无需可以通过AJAX从服务器分别获取。

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