asp.net-mvc-4
  • knockout.js
  • razor-2
  • 2013-04-23 12 views 5 likes 
    5

    を結合ATTR私のノックアウトが好きではありませんすることは完璧にうまく機能している:カミソリテンプレートエディタは、私はそれを結合attrのノックアウトを持っている構文

    <a data-bind="attr: { href: 'Action?destination=' + '@Model.Property' + '&entityId=' + Id }">Select</a> 
    

    ただし、Visual Studioで構文の強調表示は「コンスタント終了していません文字列」投げていますモデルプロパティがhref文字列に挿入されるとエラーになります。

    私は '@()'と '@:'を試しましたが、エディタを幸せにするものはありません。

    +0

    はコードの処理を行います。構文の強調表示は、次のように上記の変更により抑制することができ

    <button data-bind="click: function (data) { someFunction(data, '@Url.Action("SomeAction", "SomeController")') }">Action!</button> 

    正しくレンダリングし、ブラウザで動作しますか?もしそうなら、あなたはVSエラーメッセージに気を付けるべきではありません。剃刀のインテリセンスはまだ100%正しいわけではありません。どのバージョンのVSを使っているのですか? 2010年? 2012年?バニリア、またはResharper/CodeRush/etc? – nemesv

    +0

    @nemesv:2012 Update 2バニラを使用しています。コードは正しくレンダリングされ、複数のブラウザ間で正常に動作します。私はVSエラーが、他のプログラマーやマークアップ開発者に懸念を引き起こすかもしれないと考えています... –

    +1

    ローカル変数に 'href'全体をあらかじめ割り当てておいてから、それを使って値を入れてみましたか?一重引用符はありませんか? – Tyrsius

    答えて

    -4

    通常のHtml.ActionLinkを使用するのはなぜですか?

    @Html.ActionLink("Action", "Select", new { destination = Model.Property, entityId = Model.Id }); 
    
    1

    私はjQueryのAJAX呼び出しで後で使用するために私のviewmodel関数に(カミソリビューのUrlHelperインスタンスによって提供された)コントローラのアクションのURLを渡したい、同様の問題がありました。

    次のマークアップは、ブラウザで動作しますが、Visual Studioで構文の強調表示を与える:

    <button data-bind="@("click: function (data) { someFunction(data, '" + Url.Action("SomeAction", "SomeController") + "') }")">Action!</button> 
    
    関連する問題