AllowHtml attribut ne fonctionne pas
J'ai un modèle avec cette propriété:
[AllowHtml]
[DisplayName("Widget for Table")]
[StringLength(1000, ErrorMessage = "Maximum chars 1000")]
[DataType(DataType.Html)]
public object TableWidget { get; set; }
Et voici la création des méthodes de contrôleur:
//
//GET: /Admin/Table/Create
public ActionResult Create(int id)
{
Season season = _seasonRepository.GetSeason(id);
var table = new Table
{
SeasonId = season.SeasonId
};
return View(table);
}
//
//POST: /Admin/Table/Create
[HttpPost]
public ActionResult Create(Table a)
{
if (ModelState.IsValid)
{
_tableRepository.Add(a);
_tableRepository.Save();
return RedirectToAction("Details", "Season", new { id = a.SeasonId });
}
return View();
}
Et dernière voici mon avis:
@model Stridh.Data.Models.Table
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)
<fieldset>
<legend>Fields</legend>
<div class="editor-label">
@Html.LabelFor(model => model.Name)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Name) @Html.ValidationMessageFor(model => model.Name)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.TableURL)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.TableURL) @Html.ValidationMessageFor(model => model.TableURL)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.SortOrder)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.SortOrder) @Html.ValidationMessageFor(model => model.SortOrder)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.TableWidget)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.TableWidget) @Html.ValidationMessageFor(model => model.TableWidget)
</div>
<div class="editor-label invisible">
@Html.LabelFor(model => model.SeasonId)
</div>
<div class="editor-field invisible">
@Html.EditorFor(model => model.SeasonId)
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
Lorsque j'ajoute un "normal" message sans code html tout est sauvé OK, mais lors de l'enregistrement il est dit potentiellement dangereuse Demande.Formulaire de...
Une autre chose étrange est que j'ai eu cette [AllowHtml] de travailler dans un autre modèle de la classe. Je ne peux pas trouver pourquoi c'est en me faisant troubble. Besoin de votre aide. 🙂
Peut-être que cela peut vous aider: stackoverflow.com/questions/4821274/... de votre site web.config besoin de <requestValidationMode httpRuntime="2.0" />
cette suggestion n'est pas nécessaire correct. Vous ne devriez pas avoir à définir requestValidationMode.
Veuillez également inclure une trace de la pile de l'exception que vous voyez. Qui vous aideront à diagnostiquer le problème.
Cela doit avoir été un ancien Asp.Net MVC bug, dans les versions antérieures. Parce que je n'ai pas ces problèmes dans les nouvelles installations de la MVC. Mais encore merci pour les réponses
J'ai été aux prises avec ce problème et dans mon cas, ce répondre a aidé 🙂
cette suggestion n'est pas nécessaire correct. Vous ne devriez pas avoir à définir requestValidationMode.
Veuillez également inclure une trace de la pile de l'exception que vous voyez. Qui vous aideront à diagnostiquer le problème.
Cela doit avoir été un ancien Asp.Net MVC bug, dans les versions antérieures. Parce que je n'ai pas ces problèmes dans les nouvelles installations de la MVC. Mais encore merci pour les réponses
J'ai été aux prises avec ce problème et dans mon cas, ce répondre a aidé 🙂
OriginalL'auteur superfrallan | 2011-02-01
Vous devez vous connecter pour publier un commentaire.
La façon dont vous utilisez
AllowHtml
devrait fonctionner. Assurez-vous que vous n'êtes pas accès à laHttpRequest.Form
de la collection de n'importe où ailleurs dans votre code (contrôleur, filtre, etc) que cela va déclencher ASP.NET la Validation de la Demande et de l'erreur que vous voyez. Si vous ne souhaitez accéder à cette variable, alors vous devriez accéder via le code suivant.OriginalL'auteur marcind
J'obtiens le même problème et je le résoudre avec l'aide de ce post.
Si vous êtes sur .net 4.0 assurez-vous d'ajouter ceci dans votre site web.config
À l'intérieur de la
<system.web>
tagsMais gardez à l'esprit les conséquences qui en découlent par le biais de l'app
Conséquences: stackoverflow.com/questions/16590032/...
OriginalL'auteur Sword-Breaker
J'ai eu le même problème. Mon modèle de classe est nommée "GeneralContent" et a la propriété "Contenu". Dans mon action méthode que j'ai utilisé l'attribut comme ceci:
public ActionResult mise à Jour(GeneralContent contenu)
quand j'ai renommé le contenu de l'argument de la cnt, tout fonctionne bien. Je pense que MVC est confus quand certains attribude de modèle de la classe a le même nom que l'argument dans la méthode d'action.
OriginalL'auteur TheArchon
J'ai aussi eu ce problème. Je ne pouvais pas obtenir un modèle bien marqué avec
[AllowHtml]
pour réellement permettre à HTML et à la place a rencontré la même erreur que vous décrivez. Ma solution a fini par être pour marquer l'action de Contrôleur qui accepte posté le modèle avec la[ValidateInput(false)]
attribut.OriginalL'auteur Adam Price