Проблема проверки ASP.NET MVC - данные не опубликованы - PullRequest
0 голосов
/ 10 сентября 2011

У меня есть следующий класс:

public class NewCommentClass
{
    public string ActionName { get; set; }
    public object RouteValues { get; set; }
    [Required(ErrorMessage = "Comment Required")]
    public string Comment { get; set; }
    public int? CommentParentID { get; set; }
}

следующий код:

        NewCommentClass newCommentClass = new NewCommentClass() { ActionName = "PostComment", RouteValues = new { id = ideaItem.Ideas.IdeaID } };
        Html.RenderPartial("~/Views/Shared/NewComment.ascx", newCommentClass);

и NewComment.ascx:

    <% @ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<NEOGOV_Ideas.Models.NewCommentClass>" %>
....
    <div class="comment-new-container">
        <div class="grid_1 alpha item-sidebar">
            <p style="padding-top: 0.5em">
                <a href="#">
                    <img src="<% = userAvatar %>" class="profile-photo" alt="Your Profile Picture" width="48"
                        height="48" /></a>
            </p>
        </div>
        <div class="grid_8 omega">
            <div class="comment-body">
                <% using (Html.BeginForm(Model.ActionName, "Home", Model.RouteValues, FormMethod.Post, new { id = "FormAddComment", name = "FormAddComment" }))
                   { %>
                <fieldset>
                    <% = Html.TextAreaFor(model => model.Comment, htmlAttributes)%>
                    <% = Html.ValidationMessageFor(model=>model.Comment) %>
                    <input type="submit" value="<% = postButtonTitle %>" class="small blue awesome noborder" />
                </fieldset>
                <%} %>
            </div>
        </div>
        <div class="clear">
        </div>
    </div>

и следующий метод записи в контроллере:

     public ActionResult PostComment(int id, string Comment, int? CommentParentID, string referrerUrl)
        {
...
}

но эта проверка не работает правильно. Если я ввожу данные в textarea и нажимаю «Отправить» - все ок Но если я просто нажимаю «Отправить» без данных внутри - появляется сообщение об ошибке (это правильно), но когда я ввожу данные в textarea после этого действия - сообщение об ошибке скрывается, но форма не отправляется! Если я добавлю Html.ValidationSummary (true) - у меня одна метка скрыта, а вторая показана. Почему такое странное поведение?

1 Ответ

0 голосов
/ 10 сентября 2011

В вашей команде Html.BeginForm () вы создаете объект HtmlAttribute и используете его для установки имени и идентификатора вашего текстового поля на FormAddComment.Поскольку это единственное поле в форме, вам необходимо изменить сигнатуру метода следующим образом:

[HttpPost]
public ActionResult PostComment(string FormAddComment)

Ваша текущая подпись не получает ничего от опубликованной формы.Если вы используете Fiddler или аналогичный инструмент для проверки того, что публикуется, вы увидите FormAddComment=[whatever was typed into the textarea] в качестве тела сообщения POST, отправленного из вашего браузера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...