如何将带有双引号的转义c#字符串转换为带双引号的转义javascript字符串

时间:2015-08-04 15:34:59

标签: javascript c# asp.net-mvc c#-4.0 razor

当我尝试在javascript中使用它们时,使用带有转义符号的字符串时遇到一个问题。

在视图的顶部,我以这种方式初始化变量:

@{ var lol = "hello \"mister sir\" I am quotes"; }

在javascript中我尝试了不同的变种。出于测试目的,我写了一个小函数:

    $selector = $('#some-button');
    function test(str) {
        $selector.html(str);
        alert(str);
    }

有我的尝试:

  1. javascript转义。它可以在警报或html内容中正常工作。

    test("hello \"mister sir\" I am quotes");
    
  2. HtmlAttributeEncode或HtmlEncode。它们并不适用于所有情况。它会在警报中显示hello "mister sir" i am quotes,在html内容中显示hello "mister sir" i am quotes

    test("@HttpUtility.HtmlAttributeEncode(lol)");
    test("@HttpUtility.HtmlEncode(lol)");
    
  3. 默认c#或JavaScriptStringEncode。它们不适用于警报。它会在警报中显示hello "mister sir" i am quotes

    test("@Ajax.JavaScriptStringEncode(lol)");
    test("@lol");
    test("@HttpUtility.JavaScriptStringEncode(lol)");
    
  4. Html.Raw()。根本不起作用。它用未转义的双引号打破了标记。

    test("@Html.Raw(lol)");
    
  5. 你能帮我解决一些可以用作javascript变种(1)的方法吗?

1 个答案:

答案 0 :(得分:2)

通常情况下,最好使用您最喜欢的JSON序列化程序来编码要注入javascript的任何值。这将自动在字符串周围添加双引号,并适当地转义字符串中的任何内容:

cmake_minimum_required(VERSION 3.2)
project(sdl)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

set(SOURCE_FILES main.cpp)
add_executable(sdl ${SOURCE_FILES} Game.cpp Game.h)

INCLUDE(FindPkgConfig)

PKG_SEARCH_MODULE(SDL2 REQUIRED sdl2)
PKG_SEARCH_MODULE(SDL2IMAGE REQUIRED SDL2_image>=2.0.0)

INCLUDE_DIRECTORIES(${SDL2_INCLUDE_DIRS} ${SDL2IMAGE_INCLUDE_DIRS})
TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${SDL2_LIBRARIES}  ${SDL2IMAGE_LIBRARIES})

add_custom_command(TARGET sdl POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_directory
    ${CMAKE_SOURCE_DIR}/assets
    $<TARGET_FILE_DIR:sdl>/assets)