如何正确混合html和Session数据以形成html元素

时间:2014-08-15 06:02:11

标签: html asp.net-mvc-4 razor mixing

我有以下锚元素:

 <a href="/cabinet/inbox/1">

url中的1应该是动态的并且取自Session数据。所以我需要像这样混合它:

<a href="/cabinet/inbox/"@(String)Session["officerID"]

但我不知道应该怎么做。此外,我还需要检查是否由于某种原因Session [“officerID”]为空,如下所示:

 <a href="/cabinet/inbox/"@Session["officerID"]!=null?"0":(string)Session["officerID"]      

但似乎我需要多次放置@,因为在某些情况下,intellisense不建议使用C#代码。

实际上,我想通过向System.String强烈输入视图来从ViewModel中检索该值。但是当前视图是另一个视图的母版页,它强烈地键入自定义类。并且主页似乎不可能具有与从属页面不同的视图模型。所以我决定采用Session方式。

更新

为了克服必须多次写@的问题,我只需要将整个表达式包装在括号中,如下所示:

<a href="/cabinet/inbox/"@((String)Session["officerID"])

1 个答案:

答案 0 :(得分:2)

请勿在视图中使用Session。使用ViewBag,如下所示:

<a href="/cabinet/inbox/@(ViewBag.OfficerID ?? 0)"></a>

你的控制器中的某些地方就像这行代码一样:

ViewBag.OfficerID = 42;

ViewBag是一个动态对象,将在运行时进行评估。有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/system.web.mvc.controllerbase.viewbag%28v=vs.118%29.aspx