Параметр ActionMethod равен 0 каждый раз - PullRequest
0 голосов
/ 17 февраля 2012

У меня есть форма (вот ее часть):

@model Discussion
@{
ViewBag.Title = "Edit Discussion";
Layout = "~/Views/Shared/_App.cshtml";
}


    @using (Html.BeginForm("Update", "Discussion", FormMethod.Post, new { id = Model.discussionId, @class = "update" }))
    {
    ... rest of the view code
    }

Метод обновления моего связанного контроллера имеет:

        [HttpPost]
        [ValidateInput(false)]
        public ActionResult Update(FormCollection col, int id = 0)
        {
... rest of code
}

при отправке формы, я сохраняюполучение идентификатора 0 вместо идентификатора, который я вижу из модели, что когда я отлаживаюсь, он явно находится внутри и используется во время рендеринга формы.Это только когда я отправляю, он не передает идентификатор правильно.

Я что-то не так делаю с точки зрения синтаксиса здесь?новый {} в Html.BeginForm Я думаю, я не понимаю, как новый анонимный тип соответствует этому идентификатору, когда форма отправляется, когда это коллекция идентификаторов и класс, как вы можете видеть.

1 Ответ

2 голосов
/ 17 февраля 2012

Когда вы делаете new {id = Model.discussionId ...}, вы устанавливаете атрибут id элемента формы.Чтобы получить правильный идентификатор, вам нужно будет ввести его в форму.Поэтому внутри формы вы бы поместили скрытый элемент ввода с чем-то вроде этого: @Html.Hidden("id", Model.discussionId)

Итак, ваша текущая форма отображает что-то вроде этого:как это:

<form class="update" action="/Discussion/Update">
    <input type="hidden" name="id" value="theDiscussionId" />
    ... rest of the view code
</form>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...