2011-09-11 14 views
0

コントローラは次のとおりです。カミソリ仮想パス問題

public class HomeController : Controller 
{ 
    public ActionResult LogOn() 
    { 
     return View(); 
    } 

    [HttpPost] 
    public ActionResult LogOn(string captcha) 
    { 
     if (captcha == HttpContext.Session["captcha"].ToString()) 
      return Content("ok"); 
     else 
      return Content("failed"); 
    } 

    public CaptchaImageResult ShowCaptchaImage() 
    { 
     return new CaptchaImageResult(); 
    } 
} 

図である。

<%using (Html.BeginForm()) 
{ %> 
    <p><img src="/Home/ShowCaptchaImage" /></p> 
    <p>Please enter the string as shown above:</p> 
    <p><%= Html.TextBox("captcha")%></p> 
    <p><input type="submit" value="Submit" /></p> 
<% } %> 

すべてがうまく、キャプチャ画像がレンダリングされて行く(CaptchaImageResultは、応答ストリームにJPGを書き込みます)。しかし、私がカミソリビューエンジンを使用する場合、キャプチャ画像はレンダリングされません。

修正方法?

さらにもう1つ:キャプチャを表示するには良い方法ですか?

後で編集:<img [email protected]("../../Home/ShowCaptchaImage") />が問題なく動作します。それがこのブラウザは、のルートから/Home/ShowCaptchaImageを要求する原因となるので、最初の例では、私は、Visual Studio開発サーバーを使用していた2つ目に、私が使用したIIS

+0

剃刀ビューエンジンを使用するとき、返されるHtmlはどのように見えますか? –

答えて

0
<img src="/Home/ShowCaptchaImage" /> 

たかみそりので 問題はありませんでしたアプリケーションをホストするHTTPオリジン(scheme + domain + port)。あなたは、アプリケーションがホストされている仮想フォルダのようなものを反映するためにURLをマップする必要があります。もし私が間違っていない、これがあなたが直面している問題であるなら、ResolveUrl/ResolveClientUrl equivalents for Asp.Net Razor?を見てください(私はそれをテストしていませんが、それは良く見えます)。

また、別のブラウザでFirebugや同等のツールを使用して問題を簡単に診断できます。要求を見て、ブラウザが実際に要求していることを確認します。

関連する問題