Форма не 'POST' с атрибутом FormMethod.Post - PullRequest
0 голосов
/ 19 января 2012

У меня есть вид в виде, подобном так:

@using (Html.BeginForm("CreateDTActionBasedOnSelectedMetaAction", "TestCase", FormMethod.Post))

И метод действия со следующей подписью:

[AcceptVerbs( new string[]{"GET","POST"})]
public void CreateDTActionBasedOnSelectedMetaAction(FormCollection fc)

Однако, когда нажимается кнопка «Отправить» (расположенная в форме), это касается метода действия, но свойство Request.HttpMethod показывает «GET», и, очевидно, данные формы тогда недоступны в Объект FormCollection, поскольку он не был опубликован.

Есть мысли?

ОБНОВЛЕНИЕ: часть представления:

    @using (Html.BeginForm("CreateDTActionBasedOnSelectedMetaAction", "TestCase",  FormMethod.Post)){
    <fieldset>
        <legend>Test Case</legend>

        <div class="editor-label">
            @Html.LabelFor(model => model.Name)
        </div>
        <div class="editor-field">
        <p>@DTContext.CurrentTestCase.Name</p>
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.Criteria)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Criteria)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.DTTestCaseReqSet.DTMetaReqProcessor.DTMetaActions)
        </div>
        <div class="editor-field">
        @Html.ListBox("MyListBox", new SelectList(Model.DTTestCaseReqSet.DTMetaReqProcessor.DTMetaActions.Where(p => p.Enabled == true), "NameWithID", "NameWithID"));

        </div>


        <p>
            <input type="submit" value="Select" />
        </p>
    </fieldset>
}

UPDATE2 : Хорошо, это было глупо. Оказывается, что приложение имеет собственную систему маршрутизации, написанную другим разработчиком, который ожидал сохранения определенного параметра в строке запроса, чего не делал мой код. Это привело к тому, что система маршрутизации, взяв POST из формы, не смогла найти подходящий метод, она преобразовала его в GET, который затем нашел мой метод действия.

Я бы попросил удалить этот вопрос.

1 Ответ

1 голос
/ 19 января 2012

Создайте два метода действия. Один для получения и один для почты.

[HttpPost]
public void CreateDTActionBasedOnSelectedMetaAction(FormCollection fc)

[HttpGet]
public void CreateDTActionBasedOnSelectedMetaAction()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...