3

javascriptが無効になっている場合にのみMVCアクションを実行したいと思います。この目標を達成するため<noscript>に、HTMLにタグを追加しました。

<noscript>
    @Html.Action("BlogRss", "Home")
</noscript>

私のコントローラーで、アクションに従ってください

public PartialViewResult BlogRss()
{
     return PartialView("_BlogRss", GetFeeds());
}

問題は、タグ<noscript>がアクションの非実行に影響を与えないことです。javascriptが有効になっているかどうかにかかわらず、同じことが行われます。

<noscript>JavaScriptを有効にすると、内のすべてが表示されないことを知っています。

4

3 に答える 3

2

<noscript>はHTMLタグであり、サーバータグではなく、クライアント側でのみ機能します。サーバーは、サーバーの間に配置したコードを常にレンダリング/実行します。クライアントは、それをレンダリング/実行しません。

クライアントがJavaScriptを有効にしているかどうかをサーバー側から検出する良い方法はありません。最も現実的な方法は、javascript / AJAXを使用して非表示の値またはCookie(document.cookie)を設定し、サーバー側でこの値/Cookieを使用することです。

@if (!IsJavascriptEnabled) {
    <noscript>
        @Html.Action("BlogRss", "Home")
    </noscript>
}
于 2011-11-11T00:05:02.193 に答える
2

シンプルなクライアントサイドソリューションが必要な場合は、METAリフレッシュをお勧めします。

<noscript>
        <meta http-equiv="refresh" content="0; url=http://appUrl/BlogRss/">
</noscript>
于 2011-11-11T00:24:32.240 に答える
0

これは、「js = disable」のようなデフォルトのqueryStringを設定し、JSが有効になっている場合にのみ、この変数なしでURLにリダイレクトすることで実現できます。これが少し悪い(リダイレクト)ことは知っていますが、それが唯一の解決策だと思います。

于 2011-11-11T00:12:10.107 に答える