tldr>一旦选择了客户,所有其他控制器如何在客户的“上下文”中始终执行其操作,而无需手动传递ID?ASP.NET MVC:在页面之间传递价值
我想弄清楚'正确'的方式是处理一个整个控制器(或更多)都依赖于前一个控制器的想法的情况。例如,假设您正在构建某种客户管理系统。会有各种各样的客户功能,可能位于CustomerController上。但是当你进入订单管理时,你可能想要一个OrderController。
如果你只有一个OrderController,你的方法可能会是这样的:
公众的ActionResult编辑(串号){...}
的ID是订单的ID,对不对?当我需要回到客户那里时,我有些失落。这就像发生在顾客身上的所有行为的“背景”一样。你可以通过不断添加客户ID到行动(URL)的做到这一点:
http://site.com/Orders/Edit/1234?customerId=abc
但这似乎它变得相当繁琐要抓住这个值和干扰到它的每一个动作。有像Session这样的选项,但似乎马虎。
什么是正确的方法来做到这一点?
你为什么认为使用会话是马虎?听起来像是一个完美的用例。 – Necros 2010-08-18 02:05:16
我想我只是通过这种方式查看会话。是的,它会在这里工作,但是如果你尝试扩展等等,那么会出现问题。我通常以避免使用全局变量的方式来避开会话 - 它们可以工作,但它们有它们自己的问题。 – Jim 2010-08-18 02:27:04
使用会话的另一个重要因素是用户无法为任何子页面添加书签,因为它们需要创建该上下文。通过在URL中嵌入您需要的所有内容,用户可以直接回到他们想要的任何页面。 – Jim 2010-08-19 02:57:28