English 中文(简体)
C# MVC3
原标题:Reusing session across controllers in C# MVC3

I m 利用MVC3在C#建立一个网站。 网站是用户,使用网络服务。 网络服务使用每个用户的独一无二的会议,作为每个服务电话的最后参数。 当你在座时,你会id。

• 能够在我的用户控制人的财产中收回和节省会议费用:

private string Sid
{
    get
    {
        var sid = Session["Sid"];
        return sid == null ? "" : sid.ToString();
    }
    set
    {
        Session["Sid"] = value;
    }
}

在我的其他控制人员中,Im能够用类似财产获得会议补贴(没有固定财产),但当它要求用户控制人做一些事情,让自己获得财产,使会议无效。

似乎像会议没有在控制人员之间转移,但我不知道如何这样做。 我想从一个中央地点进入本届会议,而不是每个控制人员拥有财产,但我可以说明如何这样做。

经过三天的搜索,谷歌 has得以给我回答。 你们是否有任何想法?

最佳回答

为什么不设立基地主计长,使会议在<行动指示>中产生变数,然后使你们的所有其他人员都能参加。 主计长从本基地主计长那里继承,如:

public class BaseController : Controller
{
    protected override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        Session["Sid"] = Session.SessionID;
        base.OnActionExecuting(filterContext);
    }        
}

public class HomeController : BaseController
{
    public ActionResult Index()
    {
        ViewBag.Name = Session["Sid"];
        return View();
    }
}

public class TestController : BaseController
{
    public ActionResult Index()
    {
        ViewBag.Name = Session["Sid"];
        return View();
    }
}

希望这一帮助!

Edit

根据你下文的评论,我认为,你回顾(?)

public class BaseController : Controller
{
    public string Sid
    {
        get
        {
            var sid = Session["Sid"];
            return sid == null ? "" : sid.ToString();
        }
        set
        {
            Session["Sid"] = value;
        }
    }
}

public class HomeController : BaseController
{
    public ActionResult Index()
    {
        Sid = "2343432233aaaa";
        ViewBag.Name = Session["Sid"];
        return View();
    }
}

public class TestController : BaseController
{
    public ActionResult Index()
    {
        ViewBag.Name = Session["Sid"];
        return View();
    }
}

本届会议可取代我制定<代码>Sid的地方。 摘自您的服务

问题回答

你描述的行为非常意外;会议肯定是一样的,因此还有其他一些行为造成这种行为。

然而,处理该问题的“普通”办法是建立习俗会议记录员。 会议记录员是一个固定的阶层,具有公共财产,而且最重要的是,这只是你可以进入会议的一个单一点,因此,所有控制者都将利用这一类别撰写会议/阅读。

一种非常简单的版本将研究这样的内容:

public static class SessionWrapper
{
    public string Sid 
    { 
        get 
        { 
            var sid = Session["Sid"]; 
            return sid == null ? "" : sid.ToString(); 
        } 
        set 
        { 
            Session["Sid"] = value; 
        } 
    }
}




相关问题
Anyone feel like passing it forward?

I m the only developer in my company, and am getting along well as an autodidact, but I know I m missing out on the education one gets from working with and having code reviewed by more senior devs. ...

NSArray s, Primitive types and Boxing Oh My!

I m pretty new to the Objective-C world and I have a long history with .net/C# so naturally I m inclined to use my C# wits. Now here s the question: I feel really inclined to create some type of ...

C# Marshal / Pinvoke CBitmap?

I cannot figure out how to marshal a C++ CBitmap to a C# Bitmap or Image class. My import looks like this: [DllImport(@"test.dll", CharSet = CharSet.Unicode)] public static extern IntPtr ...

How to Use Ghostscript DLL to convert PDF to PDF/A

How to user GhostScript DLL to convert PDF to PDF/A. I know I kind of have to call the exported function of gsdll32.dll whose name is gsapi_init_with_args, but how do i pass the right arguments? BTW, ...

Linqy no matchy

Maybe it s something I m doing wrong. I m just learning Linq because I m bored. And so far so good. I made a little program and it basically just outputs all matches (foreach) into a label control. ...

热门标签