MVC"post back"DropDown List onchange选中

Mik*_*owe 3 asp.net-mvc jquery asp.net-mvc-3 asp.net-mvc-4

这是我到目前为止:

@Html.DropDownList("id", (SelectList)ViewBag.Values, new { onchange = "UpdateProduct(this);" })

<script language="JavaScript">
    $('#id').on('change', function () {
        var data = { prodID: 5, catID: 8 }; // < added test values
        $.post('GiftList/UpdateProduct', data, function (responseData) {
            //callback function
        });
    });
</script>
Run Code Online (Sandbox Code Playgroud)

这是我更新的操作方法:

[HttpPost]
public ActionResult UpdateProduct(int prodID, int catID)
{
    ........
    product.Category= catID;
   _productService.UpdateProduct(product);
    ... 
Run Code Online (Sandbox Code Playgroud)

我只是不知道如何"连线"这一切.

原始问题:

我有一个DropDown,当一个项目被选中时,运行一些代码并更新数据库中的Product表.

此下拉列表包含类别表(id和名称)中的项目:

@Html.DropDownList("id", (SelectList)ViewBag.Values, new { onchange = "UpdateProductsDB(this);" })    
Run Code Online (Sandbox Code Playgroud)

我需要传入所选类别的'id'字段.

我还需要从Product表中传递Product Id以进行更新.

我可以通过以下方式访问View中的产品ID('id'):

    @foreach (var item in Model.Products)
    {  ....
        item.Id
Run Code Online (Sandbox Code Playgroud)

我添加了一个隐藏的字段:

<input id="item_Id" name="item.Id" type="hidden" value="43" />
Run Code Online (Sandbox Code Playgroud)

MVC甚至可以实现这一点吗?从我的搜索,似乎jQuery将做到这一点.请尽可能多地提供详细信息,因为我根本不了解jQuery.

 <tr><span >Panasonic HDC-SDT750K</span>

                <input id="item_Id" name="item.Id" type="hidden" value="41" />
        </tr>       
                <tr>
                    <td width="125px" height="20px" align="right">Model: </td>
                    <td width="325px" align="left">
                        <span style="display:inline-block;width:325px;"></span>
                    </td>
                    ................

<select id="id" name="id" onchange="UpdateProductsDB(this);">

<option value="5">Accessories</option>
<option selected="selected" value="1">Desktops</option>
<option value="8">Camera, photo</option>
<option value="9">Cell phones</option>
<option value="12">Jewelry</option>  . . .
</select>
</td>


<td ><a href="/DBMJ33/GiftList/Edit/id41">Edit</a></td>
<td ><a href="/DBMJ33/GiftList/Delete/id41">Delete</a>
Run Code Online (Sandbox Code Playgroud)

Jac*_*ack 6

这应该让你走上正轨.

//your javascript
$('#myDropdown').on('change', function(){
   var data = {someData : someDataValue, someMoreData : someMoreDatavalue};
   $.post('myControllerName/UpdateProduct', data, function(responseData){
        //callback function
   });

});

//in your controller

[HttpPost]
public ActionResult UpdateProduct(int someData, string someMoreData)
{
  //do something with your data
}
Run Code Online (Sandbox Code Playgroud)