2013-11-26 11 views
5

ASP.Net MVC 3アプリケーションでは、文字列の値に二重引用符が含まれていると、フォーム上に切り捨てられた文字列が表示されます。ユーザーが文字列を入力した場合TextBoxForで切り捨てられた文字列

@Html.TextBoxFor(m => m.County) 

:「ハンプシャー "郡」、バックフォームにタイムアウト値をレンダリングするとき、唯一の文字列『Hampsire』が表示され

は、たとえば、テキストボックスを与えられました。モデルの値を調べると、二重引用符は 'Hampshire \ "County"としてエスケープされます。 Fiddlerでは、投稿された値が正しく、値がデータベースに正しく格納されているため、テキストボックスをクライアントにレンダリングするHtmlヘルパーに関連しているように見えます。

誰もがこれにいくつかの光を当てることができますか?

+0

どうしてもデータの途中にあるのはなぜですか?その入力を検証し、おそらく削除する必要がありますか?それ以外の場合は、現在経験しているようなPITAシナリオになります:) –

+0

最終HTML –

+0

ダブルアポストロフィではなく、2つのアポストロフィが並んでいるとは確信していますか? –

答えて

0

これはわかりましたが、これは私たち自身の製作の問題でした。約9か月前に、カスタムHttpEncoderのHtmlAttributeEncode()メソッドをオーバーライドすることをお勧めします。これは、出力レンダリング中に発生します。

私が追加したのは、アプリケーションの一部がスクリプトブロックをクライアントにレンダリングする必要があり、デフォルトのエンコーダがHTMLのJSコードで動いていたからです。

オーバーライドしたメソッドを削除したときに問題が解決しました。レッスンで学んだことは、絶対に必要な場合を除いて、フレームワークに慣れないでください。

もう一度、この点を考慮に入れていただきありがとうございます。

0

この問題は再現できませんでした。ちょうど新しいMVC 3プロジェクトを作成し、2つのアクション(GETとPOST)を持つコントローラを作成し、型付きのビューで、文字列プロパティーTextを持つオブジェクトを受け取り、フォーム内に表示します。問題ありません。私が入力したすべてのものがPOSTされ、POSTで正しく戻されます。

ビュー

@model MvcApplication1.Models.MyClass 
@{ 
    ViewBag.Title = "Home"; 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
} 

<h2>Home</h2> 
@using (Html.BeginForm()) 
{ 
    @Html.TextBoxFor(m => m.Text) 
} 

コントローラ

public class HomeController : Controller 
{ 
    [HttpGet] 
    public ActionResult Index() 
    { 
     return View(); 
    } 

    [HttpPost] 
    public ActionResult Index(MyClass data) 
    { 
     return View(data); 
    } 
} 

モデル

public class MyClass 
{ 
    public string Text { get; set; } 
} 

ので、問題はsomewheでなければなりませんもう1つ...レンダリングされている値が混乱する可能性のあるもの(エディタテンプレート、javascript)

レンダリングされたページのソースを調べて、値が正しいかどうか確認してください。 javascriptでなければ、サーバー内の何かでなければなりません。

+0

このミゲルを調べる時間をとってくれてありがとう、それは私たちの問題でした私が間違っていたことを説明するために私自身の質問に答えます。 – Apogee

関連する問題