我有一個表格中的圖像這樣:形式不是「POST'ing與FormMethod.Post屬性
@using (Html.BeginForm("CreateDTActionBasedOnSelectedMetaAction", "TestCase", FormMethod.Post))
和動作方法具有以下簽名:
[AcceptVerbs(new string[]{"GET","POST"})]
public void CreateDTActionBasedOnSelectedMetaAction(FormCollection fc)
然而,當單擊「提交」按鈕(位於表單中)時,它會涉及操作方法,但Request.HttpMethod屬性顯示「GET」,並且顯然表單數據在FormCollection對象中不可用,因爲它沒有張貼。
有什麼想法?
UPDATE:視圖的一部分:
@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,然後找到我的動作方法。
我會要求這個問題被刪除。
你正在使用什麼樣的提交觸發器?一個提交按鈕?發佈代碼。 –
您可以發佈完整的視圖(即按鈕的位置) – Magrangs
如果您從操作中刪除GET動詞,會發生什麼情況?它仍然被調用? –