HttpPost方法未发布

时间:2016-03-05 00:48:10

标签: html asp.net-mvc

我有两种形式。每个表单都链接到其各自的ActionMethod。第一个表单成功发布到其各自的ActionMethod但第二个表单而不是发布到其各自的ActionMethod,而是发布到First表单ActionMethod。生成的HTML是:

    <div id="tabs-ViewBranch">
<h2>Districts</h2>    
<p>
    <a href="/cityDistrict/createDistrict">Create New</a>
</p>
<form action="/cityDistrict/deletedDistricts" method="post"><p>
    <select id="Status" name="Status" onchange="
            var form1 = document.forms[0];            
            form1.submit();"><option value="0">Show Active</option>
<option value="1">Show Deleted</option>
</select>
</p>
</form><table class="table">
    <tr>
        <th>
            name
        </th>
        <th>Actions</th>
    </tr>

    <tr>
        <td>
            Gujranwala
        </td>
        <td>
            <a href="/cityDistrict/editDistrict/4">Edit</a> |
            <a href="/cityDistrict/deleteDistrict/4">Delete</a>
        </td>
    </tr>
</table>    
    </div>
    <div id="tabs-AddBranch">
<h2>Cities</h2>    
<p>
    <a href="/cityDistrict/createCity">Create New</a>
</p>
<form action="/cityDistrict/deletedCities" method="post">    <p>
        <select id="Status" name="Status" onchange="
            var form = document.forms[0];
            form.submit();"><option value="0">Show Active</option>
<option value="1">Show Deleted</option>
</select>
    </p>
</form>    <table>
        <tr>
            <td>
                No cities exists.
            </td>
        </tr>
    </table>    
    </div>
</div>

一切正常,但第二种形式没有发布到deletedCities,而是张贴到deletedDistricts。有人可以指导我哪里出错了吗?

1 个答案:

答案 0 :(得分:2)

你的问题在这里

var form = document.forms[0];

两个JavaScript事件都会导致提交文档中的第一个表单,因为它们都说forms[0]。我只是这样做:

onchange="this.form.submit();"

this引用当前元素,每个表单元素都有一个form属性,可以找到它所属的表单,而无需指定全局索引。

甚至更好,在HTML之外定义事件处理程序(提示:jQuery很受欢迎)