Идентификатор, представленный как нулевой в типизированном виде бритвы - PullRequest
0 голосов
/ 19 апреля 2011

Это действительно странно, по какой-то причине идентификатор ViewModel отображается как нулевой внутри представления.Я отладил приложение и проверил, что модель представления действительно отображается правильно (с помощью AutoMapper) и все в порядке.Но когда я делаю @ Model.Id, он рендерится как ноль, а когда я оповещаю значение с помощью jQuery, я получаю «ноль».Итак, что происходит?

            <div id="commentBox">
                @using (Html.BeginForm("Comment", "Item", new { itemId = Model.Id  } ))
                {
                    <span class="greenText">answer</span>
                    <span id="hiddenForId">@this.Hidden(x => x.Id).Id("idPlaceHolder")</span>
                    <span id="commentInputBox">@this.TextBox(x=>x.CommentText).Id("commentField")</span>
                    <span id="commentButton">@this.SubmitButton("").Id("commentSubmit").Class("okButton")</span>
                }
            </div>

        <div style="clear:both"></div>
    </div> 
</div>

<script type="text/javascript">
    $(function () {
        alert($("idPlaceHolder").html());
        $("#commentSubmit").click(function () {
            var dataObj = { 'commentText': $("#commentField").val(), 'itemId': $("idPlaceHolder").html() }
            $.ajax({
                url: '/Item/Comment',
                data: dataObj,
                type: 'POST',
                success: function (result) {
                    if (result.redirectTo != null && result.redirectTo != '') {
                        window.location.href = result.redirectTo;
                    } else {
                        alert(result.error);
                    }
                }
            });
            return false;
        });
    });
</script>

PS: на заметке, как вы говорите бланку, который не нужно публиковать и о котором позаботились?Я просто не могу вспомнить ... Это определенно что-то отличное от return false;

Ответы [ 3 ]

0 голосов
/ 19 апреля 2011

Прямо перед отображением вида - модель имеет значение для ID, верно?В таком случае это на почте?Если это так - если есть проблемы, и вы перезапускаете форму без перенаправления, MVC допускает ошибку, он будет использовать то, что было в опубликованных значениях, для обратной записи, при условии, что вы создаете новую запись, а идентификатор комментария изначально был нулевым.если это не так во время пост / повторного показа, тогда этот ответ не применяется.

0 голосов
/ 20 апреля 2011

Хорошо, я наконец-то понял, что происходит:

$(function () {
    alert($("#idPlaceHolder").val());
    $("#commentSubmit").click(function () {
        var dataObj = { 'commentText': $("#commentField").val(), 'itemId': $("#idPlaceHolder").val() }

Я использовал $("idPlaceHolder").html() вместо $("#idPlaceHolder").val() ... синтаксическая ошибка!

0 голосов
/ 19 апреля 2011

Частичный ответ: если вы вернете false в событии отправки формы, это предотвратит отправку формы.

...