2012-06-14 51 views
1

好吧SO啦,現在不要恨我現在知道如何正確地問這個問題。我在幾個月前修復了這個問題,它必須完全放棄我的想法,因爲我剛剛在我的MVC3站點(從db更新模型)上更新了我的數據模型,所以它又被打破了。我得到了動態更改DataSet列的顯示值

"A potentially dangerous Request.Form value was detected from the client" 

錯誤。在討論關於更改web.config中的一些設置時,已經有很多問題了,但我還沒有能夠讓這些工作成功。上次我修好了我99%肯定我在此生成的文件改變的東西:

[DataContract(IsReference = true)] 
[KnownType(typeof(Blog))] 
[KnownType(typeof(Comment))] 
public partial class Post 
{ 
    public Post() 
    { 
     this.Comments = new HashSet<Comment>(); 
    } 

    [DataMember] 
    public int Id { get; set; } 
    [DataMember] 
    public string Title { get; set; } 
    [DataMember] 
    public System.DateTime DateCreated { get; set; } 
    //[SOMETHING HERE??] 
    [DataMember] 
    public string Content { get; set; } 
    [DataMember] 
    public string Tags { get; set; } 
    [DataMember] 
    public int BlogId { get; set; } 
    [DataMember] 
    public virtual Blog Blog { get; set; } 
    [DataMember] 
    public virtual ICollection<Comment> Comments { get; set; } 
} 

但我不能爲我的生活記得什麼,我不知道谷歌是什麼,所以我在這裏,可恥的健忘。

如果你之前遇到過這個問題,請幫忙!

我知道編輯生成的代碼是一個愚蠢的事情,但我還沒有想出如何解決這個問題。僅在一天這麼多小時..

+0

好的,所以我通過在控制器上添加validateinput(false)屬性來解決錯誤。但我認爲還有另一種方式。通過這樣做,我不會將該控制器上的所有視圖都留給XSS攻擊嗎? – ledgeJumper

+1

只需將validateinput(false)放在需要它的控制器操作上即可。不需要在整個控制器上。 – Jesse

回答

1

您正在尋找[AllowHtml]屬性:

[AllowHtml] 
[DataMember] 
public string Content { get; set; } 

而且我知道,編輯生成的代碼是做一個大的愚蠢的事情,但我 避風港」 t想出瞭如何解決這個問題。

問題是,您正在將WCF域實體傳遞給/從視圖,這是一種非常糟糕的設計方法。

正確的方法是使用視圖模型。視圖模型是專門爲滿足視圖要求而設計的類,然後您只將視圖模型傳遞給視圖。然後,您將在您的域模型和視圖模型之間進行映射。 AutoMapper是簡化這項任務的好工具。

+0

太棒了!感謝您使用ViewModels進行調用。我已經看到它在一些地方實現,但由於某種原因,我認爲它不是MVC模式所需要的。很明顯,我現在看到了我的方式的錯誤。我今晚會檢查AutoMapper – ledgeJumper