отправить HTML-теги в поле формы при отправке формы - PullRequest
0 голосов
/ 13 апреля 2011

я пытаюсь отправить форму в действие моего контроллера, одно из полей формы содержит HTML-теги, такие как <p> <ul>

я добавил

<httpRuntime requestValidationMode="2.0"/>

и

<pages validateRequest="false" </pages>

в моем web.config, также

я добавил

[ValidateInput(false)] к действию моего контроллера

но все же, когда я отправляю форму, когда поле description содержит теги HTML, выдается следующая ошибка:

A potentially dangerous Request.Form value was detected from the client (desc="<ul><li>Comments: Th...").

что я должен / мог сделать, заранее спасибо ...

Я использую VS 2010, MVC, Entity Framework

EDIT

вот код вида сбоку

 <% using (Html.BeginForm("UpdateProductVariant", "home", new { Id = Model.productVariant.ProductVariantId }, FormMethod.Post))
      {%>
    <table>

            <tr>
                <td>Name:</td>
                <td><%: Html.TextArea("ProductVariantName", Model.product.Name)%></td>
            </tr>

            <tr>
                <td>Description:</td>
                <td><%= Html.TextArea("desc",Model.productVariant.Description)%></td>
            </tr>

сторона контроллера

 [ValidateInput(false)]
        public ActionResult UpdateProductVariant(int id, FormCollection collection, bool pub, bool del, decimal hprice)
        {

1 Ответ

3 голосов
/ 13 апреля 2011

Должно работать следующее:

Модель:

public class MyViewModel
{
    public string Description { get; set; }
}

Контроллер:

public class HomeController: Controller
{
    public ActionResult Index()
    {
        var model = new MyViewModel
        {
            Description = "<p>Hello</p>"
        };
        return View(model);
    }

    [ValidateInput(false)]
    [HttpPost]
    public ActionResult UpdateProductVariant(MyViewModel model)
    {
        ...
    }
}

Вид:

<% using (Html.BeginForm("UpdateProductVariant", "home", new { Id = Model.productVariant.ProductVariantId }, FormMethod.Post)) { %>
    <%= Html.TextAreaFor(x => x.Description) %>
    <input type="submit" value="OK" />
<% } %>

Вам нужно только добавить <httpRuntime requestValidationMode="2.0"/> в ваш web.config, если вы работаете с ASP.NET 4.0. Также вам не нужно добавлять <pages validateRequest="false" />.

Если это не работает, вы, вероятно, не украсили правильное действие контроллера атрибутом [ValidateInput(false)]. Это должно быть действие, в которое вы отправляете форму.

...