目前我有两个控制器操作:一个基于唯一标识符显示强类型视图,另一个更改模型。这是一些代码来可视化我的意思:
[HttpGet]
[ActionName("Edit")]
public ActionResult UpdateDevice(string code)
{
// Request the device based on the code.
var device = GetDeviceModel(code);
// Present the device in a view.
return View(device);
}
[HttpPost]
[ActionName("Edit")]
public ActionResult UpdateDevice(DeviceModel model)
{
}
该代码标识设备,但也可以更改它。这就是我的问题:在 post 方法中,我可以使用 访问新代码model.Code
,但我还需要知道旧代码才能更改它。
我尝试了几种替代方案,但没有一个能满足我的要求:
ViewData
在发布之前不会持续存在。TempData
是基于 Sessions 或 Cookies 的——目前我都不想使用它们。- 隐藏字段和模型绑定不是一个选项,因为它们可以在客户端进行操作。
最后,我尝试从查询字符串中请求数据,如下所示:
[HttpPost]
[ActionName("Edit")]
public ActionResult UpdateDevice(DeviceModel model)
{
var oldCode = Request.QueryString["code"];
}
这行得通!但是我没有在网上找到任何关于此的资源。所以我的问题是:在 post 操作中使用查询字符串是否可以防止修改?什么(如果有的话)条件是这样的?
如果这不是“记住”代码的有效方式,还有其他选择吗?