簡體   English   中英

ViewContext.RouteData.Values [“action”]在服務器上為空...在本地計算機上正常工作

[英]ViewContext.RouteData.Values[“action”] is null on server… works fine on local machine

我有一個奇怪的問題,其中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:未將對象引用設置為對象的實例。

任何幫助表示贊賞。 提前致謝。

你的開發和登台服務器上有不同版本的asp.net mvc嗎? 嘗試將System.Web.Mvc本地復制到登台服務器,看看是否修復了它。 (右鍵單擊引用,選擇屬性,然后將Copy Local更改為true)

這可能會或可能不會對您的情況有所幫助,但這是我從asp.net/mvc上的MVC模板中偷取的幫助擴展:

/// <summary>
/// Checks the current action via RouteData
/// </summary>
/// <param name="helper">The HtmlHelper object to extend</param>
/// <param name="actionName">The Action</param>
/// <param name="controllerName">The Controller</param>
/// <returns>Boolean</returns>
public static bool IsCurrentAction(this HtmlHelper helper, string actionName, string controllerName)
{
    string currentControllerName = (string)helper.ViewContext.RouteData.Values["controller"];
    string currentActionName = (string)helper.ViewContext.RouteData.Values["action"];

    if (currentControllerName.Equals(controllerName, StringComparison.CurrentCultureIgnoreCase) && currentActionName.Equals(actionName, StringComparison.CurrentCultureIgnoreCase))
        return true;

    return false;
}

我不能說為什么它適用於一個地方而不是另一個地方,但是:

  1. 您應該將代碼分成幾行,以確切地知道什么是null(var route = ViewContext.RouteData; var values = ...;)等。

  2. 你在哪里打電話給CheckActiveClass? 在什么時候? 它在哪里? ViewContext並不總是隨處可用。 但是你會更好地了解#1之后不可用的東西。

詹姆士

嘗試使用大寫字母

String currentController = ViewContext.RouteData.Values [“Controller”]。ToString(); String currentAction = ViewContext.RouteData.Values [“Action”]。ToString(); String currentID = ViewContext.RouteData.Values [“ID”]。ToString();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM