2013-11-26 21 views
5

截斷串在我們ASP.Net MVC 3應用程序我們就應該讓形式截斷字符串時,該字符串值包含雙引號。與TextBoxFor

例如,給定一個文本框:

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

如果用戶輸入的字符串:「漢普「縣」,渲染值回出到形式時,僅顯示字符串‘Hampsire’。如果我檢查模型中的價值,那麼雙引號就會以'Hampshire \'County''的形式逃脫。在Fiddler中,發佈的值是正確的,並且該值正確存儲在數據庫中,所以它似乎與將該文本框呈現給客戶端的Html助手相關。

任何人都可以對此有所瞭解嗎?

+0

爲什麼在你的數據中間有'''這個輸入應該被驗證,並且可能被刪除?否則你將最終得到像你現在遇到的PITA場景:) –

+0

最終的HTML通過視圖渲染看起來是正確的(除了具備在文本框中輸入了錯誤的值)嗎?你可以後呢? –

+0

你確定這是一個雙引號,而不是兩個撇號並排? –

回答

0

事實證明,這是我們自己製造的問題。 9個月前,我發現一些明亮的火花(我)認爲在自定義的HttpEncoder中重寫HtmlAttributeEncode()方法是個好主意。這在輸出渲染期間觸發。

我說這樣做的原因是,部分應用程序需要渲染腳本塊到客戶端,默認編碼器與HTML中的JS代碼擰緊。

當我們去掉了壓倒一切的方法,問題消失。獲得的經驗:除非你絕對需要,否則不要隨意使用框架。

再次感謝所有花時間來考慮這一點。

0

我無法重現此問題。剛剛創建了一個新的MVC 3項目,創建了一個帶有兩個操作(GET和POST)的控制器,並帶有一個類型化的視圖,接收一個字符串屬性爲Text的對象,並在窗體內顯示它......這一切都按預期進行。沒有問題。我輸入的所有內容都已發佈,並在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再...其他的東西,可以亂用價值被渲染(編輯模板,JavaScript)的

嘗試尋找在渲染頁面的源代碼,看看是否有值是正確的,如果是,那麼它必須是JavaScript,否則,它必須是在服務器中的東西。

+0

感謝您花時間研究這個Miguel,事實證明這是我們自己的問題我會回答自己的問題來解釋我們做錯了什麼。 – Apogee