ViewContext.RouteData.Values[“action”] 在服务器上为空...在本地计算机上工作正常
我遇到一个奇怪的问题,其中 ViewContext.RouteData.Values["action"] 在我的临时服务器上为空,但在我的开发计算机(asp.net 开发服务器)上工作正常。
代码很简单:
public string CheckActiveClass(string actionName)
{
string text = "";
if (ViewContext.RouteData.Values["action"].ToString() == actionName)
{
text = "selected";
}
return text;
}
我在 ViewContext.RouteData.Values["action"] 行上收到错误。 错误是:
异常详细信息:System.NullReferenceException:未将对象引用设置为对象的实例。
任何帮助表示赞赏。 提前致谢。
I'm having a weird issue where ViewContext.RouteData.Values["action"] is null on my staging server, but works fine on my dev machine (asp.net development server).
The code is simple:
public string CheckActiveClass(string actionName)
{
string text = "";
if (ViewContext.RouteData.Values["action"].ToString() == actionName)
{
text = "selected";
}
return text;
}
I get the error on the ViewContext.RouteData.Values["action"] line. The error is:
Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.
Any help is appreciated. Thanks in advance.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您的开发服务器和登台服务器上是否有不同版本的 asp.net mvc? 尝试将 System.Web.Mvc 本地复制到临时服务器,看看是否可以修复该问题。 (右键单击引用,选择属性,然后将“复制本地”更改为 true)
这可能对您的情况有帮助,也可能没有帮助,但这里是我从 asp.net/mvc 上的 MVC 模板窃取的帮助程序扩展:
Do you have different versions of asp.net mvc on your dev and staging servers? Try copying System.Web.Mvc locally to the staging server and see if that fixes it. (Right click on the reference, choose properties, and change Copy Local to true)
This may or may not help your situation, but here is a helper extension I stole from an MVC template on asp.net/mvc:
我无法解释为什么它在一个地方起作用而不是在另一个地方起作用,但是:
您应该将代码分成几行,以准确弄清楚什么是 null (var route = ViewContext.RouteData; var value = ... ;) 等
你在哪里调用 CheckActiveClass 从? 在什么时候? 它位于哪里? ViewContext 并不总是在任何地方都可用。 但是您将更好地了解 #1 之后哪些内容不可用。
詹姆士
I can't speak to why it works one place and not another, but:
You should break the code up into several lines to figure out exactly what is null (var route = ViewContext.RouteData; var values = ...;), etc.
Where are you calling CheckActiveClass from? At what time? Where's it located? ViewContext isn't always available everywhere. But you'll have a better idea of what's not available after #1.
James
尝试使用大写
String currentController = ViewContext.RouteData.Values["Controller"].ToString();
String currentAction = ViewContext.RouteData.Values["Action"].ToString();
String currentID = ViewContext.RouteData.Values["ID"].ToString();
Try using capitals
String currentController = ViewContext.RouteData.Values["Controller"].ToString();
String currentAction = ViewContext.RouteData.Values["Action"].ToString();
String currentID = ViewContext.RouteData.Values["ID"].ToString();