如何在Actions调用之间保持引用

时间:2015-06-16 08:55:01

标签: asp.net asp.net-mvc session

保持"参考"的最佳方式是什么?通过Action调用CRUD操作中的实体之间?

让我们说,我需要为当前客户创建一个新产品。 我应该怎样转移"我当前客户的PK以不同的视角转换为新产品的形式。

当我访问页面时,我正在使用Session容器来存储客户端的PK,但这种方式在多次操作后可能难以维护。

对此有何想法? ASP.NET MVC是否为这种跟踪提供了任何东西?

代码示例:

例如,在网格视图中的某个位置单击时设置一个键:

<script type="text/javascript">
    function OnFocusedCampaignRowChanged(s, e) {
        debugger;
        var tmp = s.GetRowValues(s.GetFocusedRowIndex(), "CampaignPK", SelectCampaignCallback);

    }
    function SelectCampaignCallback(values) {
        debugger;
        $.ajax({
            type: 'GET',
            url: '/Session/SetSessionKey',
            data: { key: "campaignPK", value: values[0] },
            sucess: function (response) {
                //alert("OK!");
                //alert(values[0]);
            },
            error: function (xhr) {
                //alert("ERROR:xhr");
                alert('ERROR::SetSessionKey!' + xhr.responseText);
            }
        });
    }
</script>

然后在我看来,我检查这样的事情:

@if ((Session["ProductList"] as List<BaseProductViewModel>) != null)
{
    @Html.Partial("ProductListPartial", (List<BaseProductViewModel>)Session["ProductList"]);
}
else
{
    @Html.Partial("EditableListPartialView");
}

或者:

settings.CallbackRouteValues = new
{
    Controller = "CheckMonitor",
    Action = "ClientSelected",
    brandPK = Session["clientPK"]
};

1 个答案:

答案 0 :(得分:0)

如果您在推荐“客户”时,您正在谈论当前登录的用户,并且您想获取其ID,请参阅:Get current user id in ASP.NET Identity 2.0

如果您想要在产品上存储客户端ID,则应在模型或链接模型之间使用外键。当您可以从模型中获取ID时,您不希望手动传递ID。