栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何将项目列表从视图传递到控制器(ASP.NET MVC 4)

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何将项目列表从视图传递到控制器(ASP.NET MVC 4)

我真的找不到直接从View向Controller传递项目列表的方法,因此我决定使用AJAX。

我将控制器的参数从 List <>更改为 int [], 以获取项目ID的数组:

public ActionResult SubmitExpenses(int[] expenseIDs, DateTime? expenseDate = null, DateTime? expenseDate2 = null, int? userId = 0)    {        expenseDate = (DateTime)Session["FirstDate"];        expenseDate2 = (DateTime)Session["SecondDate"];        if (expenseDate == null || expenseDate2 == null)        { expenseDate = DateTime.Now.AddMonths(-1); expenseDate2 = DateTime.Today;        }        string currentUserId = User.Identity.Name;        var query = from e in db.Expenses         join user in db.UserProfiles on e.UserId equals user.UserId         where e.ExpenseDate >= expenseDate && e.ExpenseDate <= expenseDate2 && e.DateSubmitted == null         orderby e.ExpenseDate descending         select new { e, user };        if (User.IsInRole("admin") && userId != 0)        { query = query.Where(x => x.user.UserId == userId);        }        else if (!User.IsInRole("admin"))        { query = query.Where(x => x.user.UserName == currentUserId);        }        //var localExpenseIDs = expenseIDs;        var joined = from dbExpense in query.Select(x => x.e).AsEnumerable()          join localExpense in expenseIDs on dbExpense.ExpenseId equals localExpense          where localExpense == dbExpense.ExpenseId          select dbExpense;        foreach (Expense exp in joined)        { exp.DateSubmitted = DateTime.Today; exp.IsSubmitted = true;        }        try        { db.SaveChanges(); return RedirectToAction("Index");        }        catch (Exception e)        { Console.WriteLine(e); return RedirectToAction("Submit");        }    }

在我看来,我将每个项目的ID分配给它自己的HTML复选框的ID:

@foreach (var item in Model)    {        <tr> <td >     @Html.CheckBox("isSubmitted", new{    @id = @Html.DisplayFor(modelItem => item.ExpenseId),    @class = "submitBox"}) </td>        </tr>     }<div>    @Html.Actionlink("Submit Expenses", "", "", null, new { @id = "submitExpenseslink" })</div>

我写了一些jQuery,以便选中的每个复选框都将输入元素的ID添加到数组中,并且整数数组将被过 SubmitExpenses 操作中:

var checkedArray = [];    $(':checkbox[name=isSubmitted]').on('change', function () {        checkedArray = $(':checkbox[name=isSubmitted]:checked').map(function () {     return this.id;         })        .get();        //alert(checkedArray);    });    $('#submitExpenseslink').click(function () {        $.ajax({ type: "POST", traditional: true, url: "@Url.Action("SubmitExpenses", "Expenses")", data: { expenseIDs: checkedArray },        success: function () { alert("Success!");        },        error: function (XMLHttpRequest, textStatus, errorThrown) { if (debug) {     alert(XMLHttpRequest.responseText);     alert(textStatus);     alert(errorThrown); }        }    });    })


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/415671.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号