从单个表行asp.net mvc发布数据

时间:2015-08-14 06:51:34

标签: c# jquery asp.net asp.net-mvc

我对MVC还很陌生,我想知道我是否以正确的方式实现了以下内容。

我有一个正在foreach循环中构建的表。每行都有一个下拉框。我使用jQuery将eventlistener附加到下拉列表以进行更改。在onchange事件中,我发布了我的数据。现在我最关心的是如何检索已更改的行的数据。我目前正在使用隐藏字段。在webforms中,这可能是一个简单的转发器,而且所有数据都可以在回发时使用。 请在下面找到我的循环的基本版本。

@foreach (var item in Model)
{
<tr>
    <td>
        @Html.DisplayFor(modelItem => item.Bar)
    </td>
    <td>
        @Html.DropDownListFor(modelItem => item.Foo, new SelectList(item.Foos, "Id", "Name", item.FooID), htmlAttributes: new { @class = "form-control ddlFoo" })
        @Html.HiddenFor(modelItem => item.Bar, htmlAttributes: new { @class = "hfBar" })
    </td>
</tr>
}

这是正确的做法吗?或者更好的方法是什么? 感谢您帮助MVC新手

******************** UPDATE ********************* 我的控制器方法如下:

public JsonResult UpdateFooBar(int FooID, int BarID)
    {
        if(dosomething(FooID, BarID)
            return Json(HttpStatusCode.OK);
        else
            return Json(HttpStatusCode.InternalServerError);
    }

jQuery是一个简单的ajax帖子。一切正常,我不确定这是否是最好的做事方式,因为DOM更改可能会破坏jQuery脚本

$('.ddlFoo').change(function () {
    var BarID = $(this).next(".hfBar").val();
    var FooID = $(this).val();
    var FooBar= {"BarID": BarID , "FooID ": FooID};
    $.ajax({
        url: '@Url.Action("UpdateFooBar", "FooBar")',
        data: JSON.stringify(FooBar),
        contentType: "application/json",
        dataType: "json",
        type: "POST",
        success: function () {
        }
    });
});

0 个答案:

没有答案