2011-11-11 7 views
3

javascriptが無効な場合にのみMVCアクションを実行します。 は、この目標を達成しようとするために、私は私のhtmlでタグ<noscript>を追加しました:アクションjavascriptが無効の場合にのみアクションを実行

public PartialViewResult BlogRss() 
{ 
    return PartialView("_BlogRss", GetFeeds()); 
} 
に従ってください、私のコントローラで

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

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

JavaScriptが有効になっている場合、<noscript>の中のすべては表示されません。

+0

なぜJavaScriptが無効になっている場合、サーバーに注意する必要がありますか? – zzzzBov

+0

JavaScriptを無効にした場合にのみアクションを実行する必要があります。それ以外の場合は、JavaScriptを介してロードされます – ridermansb

答えて

2

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

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

@if (!IsJavascriptEnabled) { 
    <noscript> 
     @Html.Action("BlogRss", "Home") 
    </noscript> 
} 
+0

私はasp.net mvcでこれを行うことができますか? javascriptを使用して作成しました。document.cookie = c_name + "=" + c_value Response.Cookiesのサーバーサイドアクションは何も返しません。あれは正しいですか? – ridermansb

+0

最初のリクエストでは何も返されません(JavaScriptがクッキーを設定するには、まずページをクライアントに渡す必要があります)。 –

0

あなたは「JS =無効」などのデフォルトのqueryStringを設定する場合、これは、あなたはJSが有効になっている場合のみ、この変数せずにURLにリダイレクトする、達成することができました。私はこれが少し悪い(リダイレクション)ことを知っていますが、私はそれを唯一の解決策として見ています。

2

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

<noscript> 
     <meta http-equiv="refresh" content="0; url=http://appUrl/BlogRss/"> 
</noscript> 
+0

私は理解できません、これは何ですか?使い方? – ridermansb

+0

@Riderman de Sousa Barbosa、クライアントブラウザのJavaScriptが無効になっている場合、GETアクションOPを実行するURLが更新されます。 –

+0

はい、リクエストを行い、PartialViewを1つだけ返し、サイト全体を新しいURLにリダイレクトする必要はありません。 '@Html.Action(" BlogRss "、" Home ")'は、サイト全体を新しいURLにリダイレクトしません。 – ridermansb

関連する問題