我有以下锚元素:
<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"])
答案 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。