2012-06-14 4 views
1

Хорошо, друзья, не ненавидите меня, зная, как правильно задать этот вопрос. У меня было исправлено несколько месяцев назад, и это, должно быть, полностью оставило мой разум, и поскольку я только что обновил мою модель данных на моем сайте 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; } 
} 

Но я не могу за жизнь мне помнить, что, и я не уверен, что Google, поэтому я здесь , позорно забывчивый ..

Если вы столкнулись с этим раньше, помогите!

И я знаю, что редактирование сгенерированного кода - это большая глупая вещь, но я еще не понял, как это сделать. Только так много часов в день ..

+0

ОК, поэтому я обошел ошибку, добавив атрибут validateinput (false) на контроллер. Но я думал, что есть другой путь. Делая это, не оставляйте каждое представление на этом контроллере открытым для атак XSS? – ledgeJumper

+1

Просто введите validateinput (false) в действие контроллера, которое его требует. Не нужно находиться на всем контроллере. – Jesse

ответ

1

Вы ищете атрибут [AllowHtml]:

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

И я знаю, что редактирование сгенерированного код является большим немым, что нужно сделать, но я гавань» Я выяснил, как это сделать.

Проблема в том, что вы передаете свои объекты домена WCF в/из видов, что является очень плохим дизайном.

Правильный способ - использовать модели просмотра. Просмотреть модели - это классы, которые вы специально разрабатываете, чтобы соответствовать требованиям ваших взглядов, а затем вы просматриваете только модели просмотра. Затем вы будете сопоставлять между моделями вашего домена и моделями просмотра. AutoMapper - отличный инструмент для упрощения этой задачи.

+0

Удивительный! Спасибо за призыв к использованию ViewModels. Я видел, как он реализовывался в нескольких местах здесь и там, но по какой-то причине я думал, что это не нужно в шаблоне MVC. Очевидно, теперь я вижу ошибку моих путей. Сегодня вечером я проверю AutoMapper – ledgeJumper

Смежные вопросы