- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我对 ASP.NET MVC 框架及其管道的不熟悉使我来到这里,我感谢任何人耐心阅读和考虑我的问题!
好的,场景是这样的:我有一个应用程序,它有许多带有网格的页面,这些页面显示基于搜索的数据,从其他数据中向下钻取,基于上下文特定数据的报告(即它们在 Foo 的详细信息页面上,然后单击显示与 Foo 相关的数据表的链接,等等。
从遍布应用程序的所有这些页面,用户可以通过给它一个名称和描述来保存“报告”或网格。这并没有真正保存显示在网格中的数据,而是保存了定义网格外观的参数,保存了用于获取数据的参数,并保存了参数定义它们在应用程序中的“位置”(操作、 Controller 、路由)——基本上是一堆关于报告/网格以及如何构建它的元数据。
所有这些保存的报告都在一个列表中可用,在应用程序的特定页面上显示名称和描述,每个链接到一个通用 URL,例如“/Reports/Saved/248”(其中 248 是报告 ID 的示例)。
这是我需要帮助的部分:
当我通过 url“/Reports/Saved/248”访问操作并将元数据从该特定报告的数据库中拉出时,我如何才能将该数据和请求重定向到相同的操作、 Controller 和路由用于显示最初保存报表的 View ?本质上,我希望用户在同一 View 中查看报告,使用与保存报告时相同的 URL。如果可能的话,我最好能够基本上“调用”相同的操作,就好像我正在进行方法调用一样。
更新:不幸的是,我们的报告页面(即这些网格出现的页面)没有使用 RESTful URLs - 例如,我们有一个我们称之为高级搜索页面的页面,它需要相当多的潜在参数(将近 30 ) 来自包含选择列表、文本框等的表单。当用户提交该页面时,我们对一个接受模型 Binder 为我们构建的复杂类型的操作执行 POST - 我想调用的是相同的操作当用户从数据库中选择保存的高级搜索时。这个例子集中体现了我的问题。
谢谢
最佳答案
我认为您会希望使用带有采用 RouteValueDictionary 的签名的 RedirectToAction。您要重定向到的方法需要能够从 Controller 上的 ValueProvider 中提取值。它可能看起来像:
public ActionResult Saved( int id )
{
var reportParams = db.Reports.SingleOrDefault( r => r.ID == id );
if (reportParams == null)
...handle error...
var routeValues = ParamsToRouteValueDictionary( reportParams );
return RedirectToAction( reportParams.Action, reportParams.Controller, routeValues );
}
private RouteValueDictionary ParamsToRouteValueDictionary( object parameters )
{
var values = new RouteValueDictionary();
var properties = parameters.GetType().GetProperties()
.Where( p => p.Name != "Action" && p.Name != "Controller" );
foreach (var prop in properties)
{
values.Add( prop.Name, prop.GetValue(parameters,null) );
}
return values;
}
编辑
实际上,使用过滤器模型作为方法的参数可能会更容易。您只需要操作的 GET 和 POST 版本。
[ActionName("People")]
[AcceptVerbs( HttpVerbs.Get )]
public ActionResult PeopleDisplay( SearchModel filter )
{
return People( filter );
}
[AcceptVerbs( HttpVerbs.Post)]
[ValidateAntiForgeryToken]
public ActionResult People( SearchModel filter )
{
....
}
然后您将在您的数据库中为报告存储过滤器参数(按名称)、操作(“人员”)和 Controller 。重定向结果将使用 GET 并被定向到 PeopleDisplay 方法,而后者又简单地使用正确的参数调用 People 方法。从表单发帖直接调用 People 方法。使用两种方法可以让您使用 CSRF 预防机制。您可以在 TempData 中使用标志来确保 GET 操作仅在您希望限制对它的访问时通过重定向机制调用。
结束编辑
另一种选择是简单地存储所使用的 View ,而不是进行重定向,只呈现适当的 View 。您需要考虑的一件事是,执行重定向将以包含所有参数的 URL 结束,而呈现 View 将单独保留 URL,只显示与创建报告时使用的 URL 相同的 View .
关于c# - 如何从保存的数据在 ASP.NET MVC 中重建 URL/路由?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/825616/
如果我使用 alter index x rebuild 重建不可用的索引,是否会重新评估之前使用该索引的任何 SQL 的执行计划? 我知道在我使用的数据库版本 - Oracle 10.2.0.4.0
我正在研究 3d 重建。现在当我考虑一对图像时。我有一组对应点。我有我的相机详细信息。例如我有焦点细节,旋转和平移矩阵(4 * 4)。我想在 3D(三角剖分)中投影我的点。因此,据我所知,因子代数非常
从教程中:https://programtalk.com/vs2/?source=python/8176/opencv-python-blueprints/chapter4/scene3D.py 我不
我需要您的帮助和建议。这个问题包括以下几项:某房间的照片,该房间站在严格固定位置的房间内(一个房间围绕轴线旋转)。如何将所有这些图片组合在一起,从而产生一种效果,就像我们用眼睛看到的一样?从一点开始就
嘿那里,以下问题:我在工作中使用一个相当奇怪的 Linux 发行版(Centos 5),它似乎有一个较旧的内核(或者至少在内核中存在一些差异),并且您不能简单地更新它。我需要安装的程序需要一个函数 c
我读了一些关于受限玻尔兹曼机的文章。这些机器的重建能力经过了测试。我了解训练是如何进行的,但不了解重建是如何完成的。有人可以给我一些提示吗? 最佳答案 杰夫·辛顿 (Geoff Hinton) 的演讲
如果轻量级迁移失败,我将尝试重建核心数据数据堆栈,并将用户送回登录屏幕。我正在通过将一对多关系更改为一对一关系来对此进行测试。 起初,我在删除新的 persistentStoreCoordinator
以下所列示例中中 `table_name` 表示数据表名,`index_name` 表示索引名,column list 表示字段列表(如:`id`,`order_id`)。 1、创建索引 索引的
当您根据 ListView.builder 和 ListView.separated valueKey = key; return _messages
切换底部导航页面后,我有一个非常烦人的谷歌地图 flutter 重建问题。我已经坚持了最后一次缩放和相机位置,但是每次我进入 map 页面时,小部件都会自行重建。如何预防? 最佳答案 采用 Autom
我是 Python 的新手。我在重建一个错误的 Dataframe 时遇到了麻烦。我的数据框如下所示: df = pd.DataFrame({'col1': ['id 1', 'id 2', 'tes
我正在尝试从 2 个图像中实现 3d 重建。我遵循的步骤是, 1. Found corresponding points between 2 images using SURF. 2. Impleme
// Start with this JSON var initialJson = { "rows": [{ "ID": 123, "Data": 430910, "Ver
在有状态的小部件中,我有一个导航部分,用户可以在其中选择父项,并在子项下方显示。 当我选择父级也可以重建子部件时,但是当我导航抛出父项而不选择一个子部件时,父级也可以重建(这是正常的),但是子部件也可
我有一个网络摄像头,它可以围绕人的头部以给定的角度步长旋转,并为每一步获取一张图片。 我正在寻找一个免费的开源库,该库从获取的图像集开始,使我能够生成代表人头部的 3D 表面,或者至少是定义明确的 3
我想从一行中读取一个字符串,然后将其放入一个变量中,该变量随后用作文件名。该字符串位于 .csv 文件中的第二行末尾。由于不必要的标题,需要删除第一行。还有‘;’旧 .csv 文件中使用的内容需要替换
我正在使用file-embed如此封装: import qualified Data.ByteString as B import qualified Data.ByteString.Internal
我的 makefile 总是重建,不明白为什么.. 这里是: SRC = $(DIR)/my_getnbr.c \ $(DIR)/my_isneg.c \ $(DI
我有一个附带编辑器的 Eclipse 插件。 我添加了更改语法突出显示颜色的首选项,但这些更改仅在我手动重新启动编辑器后才适用。 我通过一个 DefaultDamagerRepairer 实现了语法高
我有一段 php 可以输出 div(取决于数组中有多少个)并为该 div 分配一个 id(即 div_1、div_2)等 我还设置了一个隐藏字段,其中包含输出了多少个 div 的计数(divcount
我是一名优秀的程序员,十分优秀!