У меня есть вид в виде, подобном так:
@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, который затем нашел мой метод действия.
Я бы попросил удалить этот вопрос.