2

次の部分的な「InfoWindowContent」ビューがあります。

    @model CasWeb.Models.ViewModels.AssetLocation
<div>
    <h2>@Model.Name</h2>
    <table>
        <tr>
            <td>
                Lat:
            </td>
            <td>@Model.Lat
            </td>
        </tr>
        <tr>
            <td>
                Lng:
            </td>
            <td>@Model.Lng
            </td>
        </tr>
    </table>
</div>

そして、これをグーグルマップの情報ウィンドウのコンテンツとして使いたいと思います。だから私はこのようなことを考えてきました

//Get the content for info window for this asset from a a partial view
            var infoWindowContent@(asset.Name) = "@Html.Action("InfoWindowContent", @asset)";

            var infoWindow@(asset.Name) = new google.maps.InfoWindow({
                content: infoWindowContent@(asset.Name),
                maxWidth: 200
            });

私が抱えている問題は、@ html.Actionメソッドがすべての改行を含む部分ビューを返し、最終的に次のようなJavaスクリプトコードになるため、Javaスクリプトが未終了の文字列リテラルを持っていると文句を言うことです。

var infoWindowContentd4444444 = "<div>
<h2>d4444444</h2>
<table>
    <tr>
        <td>
            Lat:
        </td>
        <td>43
        </td>
    </tr>
    <tr>
        <td>
            Lng:
        </td>
        <td>43
        </td>
    </tr>
</table>

";

これを回避するには、次のように部分ビューからすべての改行を削除します。

    @model CasWeb.Models.ViewModels.AssetLocation
<div><h2>@Model.Name</h2><table><tr><td>Lat:</td><td>@Model.Lat</td></tr><tr><td>Lng:</td><td>@Model.Lng</td></tr></table></div>

しかし、これは苦痛であり、維持するのは困難です。

部分ビューをJavaスクリプト文字列としてレンダリングする方法はありますか?

4

1 に答える 1

0

もう 1 つのアクションを作成し、そのアクションから PartialViewResult を返すことをお勧めします。このアクションの Json リクエストを作成し、DIV に HTML レスポンスを追加します。詳細はこちらをご覧ください。

于 2012-07-10T05:57:49.297 に答える