asp.net-mvc-3 - MVC 3 Razor 使用 actionlink 将 webgrid 行数据传递到 Controller

标签 asp.net-mvc-3 razor webgrid actionlink

我有一个带有操作链接的网络网格,我想用它来编辑新 View 中选定的行。我知道我可以使用 actionlink 为我的 actionresult 方法提供论证,但除了使用 actionlink 之外,我不知道如何将 webgrid 的行数据传递到我的 Controller 。

@{
    ViewBag.Title = "Index";
}
<h2>
    Index</h2>
<p>
    @Html.ActionLink("Create New User", "CreateUser")
</p>
<div class="webgrid-wrapper">
    @model IEnumerable<UserManager.Models.vw_UserManager_Model_Add_Users>
@{
    ViewBag.Title = "Jobs";
    WebGrid grid = new WebGrid(Model, canPage: true, canSort: true, rowsPerPage: 15, selectionFieldName: "selectedRow", fieldNamePrefix: "gridItem");

}
    @grid.GetHtml(
    fillEmptyRows: true,
        tableStyle: "webgrid",
                alternatingRowStyle: "webgrid-alternating-row",
                headerStyle: "webgrid-header",
                footerStyle: "webgrid-footer",
                selectedRowStyle: "webgrid-selected-row",
            rowStyle: "webgrid-row-style",
        mode: WebGridPagerModes.All,
columns: new[] {
    //grid.Column("ApplicationId"),
    //grid.Column("salutation"),

    //grid.Column("PasswordSalt"),

     grid.Column("FirstName"),

    //grid.Column("LoweredEmail"),
    //grid.Column("PasswordQuestion"),
    //grid.Column("PasswordAnswer"),

    // grid.Column("PasswordFormat"),
    grid.Column("LastName"),
    grid.Column("Password"),
    grid.Column("isactive"),
    //grid.Column("IsLockedOut"),
    grid.Column("email"),
   grid.Column("module_name"), 

    //grid.Column("LastLoginDate"),
    //grid.Column("LastPasswordChangedDate"),
    //grid.Column("LastLockoutDate"),

    //grid.Column("FailedPasswordAttemptCount"),
    //grid.Column("FailedPasswordAttemptWindowStart"),
    //grid.Column("FailedPasswordAnswerAttemptCount"),
    //grid.Column("FailedPasswordAnswerAttemptWindowStart"),
   // Rest of grid columns, seen previously
    @*grid.Column(
       "",
        header: "Actions",
        format: @<text>
    @Html.ActionLink("Edit", "Edit", new { id = item.email }) 
    </text>
    )   , 
     grid.Column(
       "",
        header: "Actions",
        format: @<text>
    @Html.ActionLink("Delete", "Delete", new { id = item.email })
    </text>
    )    *@
@*     grid.Column(
            header:"", 
            format:@<text><div id="btnSelectedRow">
                "@item.GetSelectLink("Edit")</div></text>
            ),*@


     grid.Column(
            header:"", 
            format:@<text><div id="btnSelectedRow">
                "@Html.ActionLink("Edit record", 
                        "EditUser",
                        "UserManager",
                                       new {selectedRow = grid.SelectedRow },
                        null
                        )</div></text>
            )
})
    @if (grid.HasSelection)
    {
        var record = grid.SelectedRow;
@*@RenderPage("~/Views/UserManager/EditUser.cshtml", new { record = grid.SelectedRow })*@

    }
</div>
<script type="text/javascript">
    $(document).ready(function () {
        function jQueryUIStyling() {
            $('input:button, input:submit').button();

            // Style tables.
            $('.webgrid-wrapper').addClass('ui-grid ui-widget ui-widget-content ui-corner-all');
            $('.webgrid-title').addClass('ui-grid-header ui-widget-header ui-corner-top');
            jQueryTableStyling();
        }

        //
        // Style tables using jQuery UI theme. This function is 
        // split out separately so that it can be part of the AJAX
        // callback of the WebGrid WebHelper in ASP.NET MVC.
        //
        function jQueryTableStyling() {
            $('.webgrid').addClass('ui-grid-content ui-widget-content');
            $('.webgrid-header').addClass('ui-state-default');
            $('.webgrid-footer').addClass('ui-grid-footer ui-widget-header ui-corner-bottom ui-helper-clearfix');
        }
    });

</script>

我的 Controller

 public ActionResult EditUser(System.Web.Helpers.WebGrid record)
        {
            record.ToString();

            return View();
        }

摘要

如何通过 ActionResult 方法使用 ActionLink 将行数据从一个 View 传递到另一个 View 。

最佳答案

实际上,您有两个选择:让您的操作获取用户 ID 并查找用户,或者让网格的每一行包含一个表单,当您单击“编辑”时,该表单将所有用户详细信息发送到操作。您选择哪一个取决于您应该执行的操作:

  1. 如果它重定向到用户可以编辑所选用户的表单,请使用第一种方法
  2. 如果它获取所有用户详细信息并保存更新的用户,请使用第二种方法

编辑

要传递 ID,您可以将其用于操作链接:

@Html.ActionLink(
    "Edit record",
    "EditUser",
    "UserManager",
    new { id = item.email })

...这用于操作签名:

public ActionResult EditUser(string id)

关于asp.net-mvc-3 - MVC 3 Razor 使用 actionlink 将 webgrid 行数据传递到 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13269623/

相关文章:

javascript - 当我混合 razor 和 JS 并使用 <text> </text> 时,正则表达式出现问题

asp.net-mvc-3 - WebGrid 列中的 MVC3 Html.BeginForm?

asp.net-mvc - HttpPostedFileBase 未绑定(bind)到模型

asp.net-mvc - MVC 3 401 托管服务器上未经授权

jquery - 对自定义属性执行客户端验证

c# - ASP.NET C# MVC 将值从 Controller 传递到 cshtml

width - 设置带省略号的列的宽度

asp.net-mvc-3 - 使用 MVC3 WebGrid - 列不存在错误

asp.net - 如何在索引和编辑 View (强绑定(bind))中传递和合并 MVC3 中的两个模型?

c# - 在 PayPal sdk 中调用 Payment.Create 时出现服务器不可用错误