2017-03-14 15 views
0

JavaScriptコードからJavaScript関数に3つのパラメータを渡していますが、最初の2つは正しく渡されますが、3つ目は決して渡されません。最初の2つはint/numbersですが、文字列はひげそりのjavascript関数に文字列を渡す

これは正常に動作します

if (geResult.ResultValue != null) { 
    var val = "A!"; 
    <script>{ getPosition(@geResult.assessmentId, @index, "A!"); }</script> 
} 

THIS DOESNOT WORK

if (geResult.ResultValue != null) { 
    var val = "A!"; 
    <script>{ getPosition(@geResult.assessmentId, @index, @val); }</script> 
} 

答えて

2

これを試してみてください - あなたはあなたの代わりに、単一のパラメータを渡すのかみそりからJSONオブジェクトを生成することができ、より堅牢な実装をご希望の場合は、単に

if (geResult.ResultValue != null) { 
<script>{ getPosition('@geResult.assessmentId', '@index', '@val'); }</script> 
} 

単一引用符を追加するには...それは作品

+0

素晴らしい!だから一重引用符だった! – Samra

+0

それは働いた??あなたは私の答えを受け入れることができますか –

1

を願っています。これは、ブール値や文字列を渡す場合に特に便利です。 Json.Encodeがこれを処理するので、あなたのカミソリ変数を引用または解釈する必要はありません。オブジェクトはこれを試して生成するために

var parameters = JSON.parse('@Html.Raw(Json.Encode(new { assessmentId = geResult.assessmentId, index = index, value = val }))'); 

Json.EncodeはJSONにかみそりからAnonymousTypeを変換します。 @ Html.Rawは、マークアップのエンコードを防止します。

結果は、クライアントが使用する文字列としてレンダリングされるjsonオブジェクトです。クライアントがJSON.parse()を使用してテキストを解析するとき、またはjQueryを使用している場合はjQuery.parseJSON()を使用して結果があなたのカミソリのパラメータを含むオブジェクトになります。

関連する問題