【问题标题】:error while posting pagedlist from view to the controller将分页列表从视图发布到控制器时出错
【发布时间】:2017-05-12 06:13:25
【问题描述】:

我在 MVC 中有一个索引页面,其中的数据以表格格式从数据库中显示并使用分页。我只想编辑表格的一列。我可以将分页列表发布到控制器进行编辑吗?如果有怎么办? 在传递 PagedList 时,我可以在正常列表出错的情况下进行编辑

---这是我的索引页----

@model PagedList.IPagedList<emp_prac.Models.Employee>
@using PagedList.Mvc;

@*@model List<emp_prac.Models.Employee>*@

@using (Html.BeginForm("UpdateOrder", "Employee", FormMethod.Post))
{
    Html.AntiForgeryToken();
    Html.EditorForModel();
    ViewBag.Title = "Employee Details";

<h2>Employee Details</h2>

<p>
    @Html.ActionLink("Create New", "InsertEmployee")
</p>

<table class="table">
    <thead>
        <tr>
            <th>Edit</th>
            <th>Delete</th>
            <th>Name</th>
            <th>Email</th>
            <th>Phone No</th>
            <th>Salary</th>
            <th>Joining Date</th>
            <th>PDF</th>
            <th>Status</th>
            <th>Order</th>
        </tr>
    </thead>
    <tbody>
@for (int i = 0; i < Model.Count; i++)
{
    <tr>
        <td>@Html.ActionLink("Edit", "EditEmployee", new { id = Model[i].emp_id }) </td>
        <td>@Html.ActionLink("Delete", "DeleteEmployee", new { id = Model[i].emp_id }, new { onclick = "return confirm('Are you sure you want to delete?');", @class = "btn-btn-default" }) </td>
        <td>@Html.DisplayFor(model => model[i].emp_name)</td>
        <td>@Html.DisplayFor(model => model[i].emp_email)</td>
        <td>@Html.DisplayFor(model => model[i].emp_phone_no)</td>
        <td>@Html.DisplayFor(model => model[i].emp_salary)</td>
        <td>@Html.DisplayFor(model => model[i].emp_joining_date)</td>
        <td>@Html.ActionLink("PDF", "UploadPdf", new { id = Model[i].emp_id }) </td>
        <td>@(Html.DisplayFor(model => model[i].emp_status).ToString() == "1" ? "Active" : "Inactive")</td>
        <td>@Html.TextBoxFor(model => model[i].emp_order, new { style = "width: 35px" })</td>
        <td>@Html.HiddenFor(model => model[i].emp_id)</td>
    </tr>
}
        </tbody>
</table>
<button type="submit" value="Order" onclick="location.href='@Url.Action("UpdateOrder","Employee")'">Order</button>
}
    <br />
    Page @(Model.PageCount < Model.PageNumber ? 0 : Model.PageNumber) of @Model.PageCount
    @Html.PagedListPager(Model, page => Url.Action("Index", new { page }))`

---这是我的控制器动作方法---

 [HttpPost]
        public ActionResult UpdateOrder(PagedList<Employee> obj_view)
        {
            foreach (var abc in obj_view)
            {
                Employee obj = new Employee();
                obj.emp_order = abc.emp_order;
                obj.emp_id = abc.emp_id;
                obj.Mode = "O";
                Employee.InsertUpdateEmployee(obj);
            }
            return RedirectToAction("Index");
        }

【问题讨论】:

  • 您遇到什么类型的错误,请发布一些代码以更清楚地说明您的问题。
  • "没有为此对象定义无参数构造函数。"这是我遇到的错误
  • 请看看这个SO Quotation

标签: asp.net-mvc razor


【解决方案1】:

我深入研究了您的代码,根据我的观点,以下行可能会导致错误。

**<button type="submit" value="Order" onclick="location.href='@Url.Action("UpdateOrder","Employee")'">Order</button>
}**

原因:

通过表单post发布数据时,提交按钮中无需指定onclick

解决方案:

只需将上面的行替换为像这样的简单提交按钮

**<input type="submit" value="Order" class="btn btn-default" />**

并在按钮单击事件中查看是否使用断点获取数据。

希望你现在一定能得到数据,请让我知道你的想法或反馈

谢谢 卡提克

【讨论】:

  • 嗯。那我认为你在其他地方也有问题,好吧,然后试着看看这个forums.asp.net/t/…,他们也有类似的问题。我看了那篇文章,最后他们给出了答案,看到这也适合你。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多