2012-11-07 48 views
2

我有與我想使用在新視圖來編輯所選擇的行的一個ActionLink的到的WebGrid控制器。我知道我可以使用ActionLink應該提供一個arguement我的ActionResult方法,但我不知道如何的WebGrid的行數據除了使用ActionLink的傳遞給我的控制器。MVC 3剃刀傳遞的WebGrid行數據使用ActionLink的

@{ 
    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> 

我控制器

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

      return View(); 
     } 

摘要

如何從通過的ActionResult方法一個圖到另一個通過使用ActionLink的行數據。

+0

難道沒有人知道這個解決辦法嗎? –

回答

2

你有兩個選擇,真正做到:有你的行動採取的用戶ID和查找用戶,不然有你的網格中的每一行包含會把所有的用戶信息到該動作的形式,當您單擊「編輯」。其中那些你選擇取決於你的行動是應該做的:

  1. 如果它重定向到一個表單,用戶可以編輯他們選擇的用戶,使用第一種方法
  2. 如果需要所有用戶詳細信息並保存更新的用戶,使用第二種方法

編輯

要傳遞的ID,你可以用這個操作鏈接:

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

...這對於行動簽名:

public ActionResult EditUser(string id) 
+0

我想帶上Id。你有沒有這方面的例子。我想行值傳遞給我的ActionResult,一個ID,我可以很容易地查詢數據庫和檢索正確的數據。問題是我不知道我要給ActionLink提供什麼參數。 –

+0

我已經更新了我的答案:) –

+0

謝謝,我不知道你能做到這一點這樣的。 item.email如何具有正確的值? –