2016-05-18 45 views
0

DROPDOWNLIST如何我通過從我的WebGrid的ID給我的ActionResult:顯示(重定向)從的WebGrid查看與參數上查看

這裏是我的WebGrid代碼:

@using (Html.BeginForm("LandingPage", "ProjectDetail")) 
{ 
var grid = new WebGrid(Model.Projectmodel, canPage: true, rowsPerPage: 3, defaultSort: "ProjectName"); 

<div id="gridContent" style="font-family: Arial; padding: 20px;" class="col-md-12"> 
    @grid.GetHtml(tableStyle: "webgrid-table", 
    headerStyle: "webgrid-header", 
    footerStyle: "webgrid-footer", 
    alternatingRowStyle: "webgrid-alternating-row", 
    selectedRowStyle: "webgrid-selected-row", 
    rowStyle: "webgrid-row-style", 
    columns: grid.Columns(
       grid.Column("ProjectName", format: (item) => item.GetSelectLink(item.ProjectName.ToString())), 
       grid.Column(columnName: "DesignerName", header: "Designer Name"), 
       grid.Column(columnName: "ProjectType", header: "Project Type"), 
       grid.Column(columnName: "FluidType", header: "Fluid Type"), 
       grid.Column(columnName: "PipeMaterial", header: "Pipe Material"), 
       grid.Column(header: "", format: (item) => 
       { 
        var link = Html.ActionLink("View/Edit", "LandingPage", new { pkiProjectID = item.pkiProjectID }, new { @class = "btn btn-default2" }); 
        return Html.Raw(link); 
       })), mode: WebGridPagerModes.All) 

    <h2>Project Details: </h2> 
    @if (grid.HasSelection) 
    { 
     var emp = (AirFlo_Size_Programme.Models.ProjectDetail)grid.Rows[grid.SelectedIndex].Value; 
     <p><b>Project Name:</b> @emp.ProjectName</p> 
     <p><b>Designer Name:</b> @emp.DesignerName</p> 
     <p><b>Project Type:</b> @emp.ProjectType</p> 
     <p><b>Fluid Type:</b> @emp.FluidType</p> 
     <p><b>Pipe Material:</b> @emp.PipeMaterial</p> 
    } 
</div> 
} 

ActionResult

public ActionResult ProjectInformation(ProjectInformationController model, int id) 
    { 
     if(!ModelState.IsValid) 
     { 
      return View(model); 
     } 

     using (RexusTradingEntities RTE = new RexusTradingEntities()) 
     { 
      var ProjectData = (from PI in RTE.ProjectInformations.ToArray() 
           orderby PI.Project_Name 
           select new SelectListItem 
           { 
            Text = PI.Project_Name, 
            Value = PI.pkiProjectID.ToString() 
           }).ToArray(); 
      ViewBag.ProjectList = ProjectData; 
     } 



     return View(); 
    } 

然後我想用這個ID在View一個DropDownList我引導到,這是一件好事IM還不能確定該怎麼做才能選擇一個項目。

但是,現在ID傳遞的URL - 我不想這個。我想將參數傳遞給我的ActionResult並希望我的URL保持「乾淨」 - 我該怎麼做?

在一個側面說明,即時尋找CSS可以風格我的WebGrid很好(可能圓角等) - 這可能嗎?

謝謝!

回答

0

多小時後,我終於得到它的工作:

Model: 

public class ProjectInformationViewModel 
{ 
    public int SelectedProjectID { get; set; } 
    public SelectList ProjectList2 { get; set; } 

    //Other Properties required for View added below 
} 

Controller: 

public ActionResult ProjectInformation(ProjectDetailsViewModels model, int ProjectID) 
    { 
     if(!ModelState.IsValid) 
     { 
      return View(model); 
     } 

     var PIVM = new ProjectInformationViewModel(); 

     using (RexusTradingEntities RTE = new RexusTradingEntities()) 
     { 
      var ProjectData = (from PI in RTE.ProjectInformations.ToArray() 
           orderby PI.Project_Name 
           select new SelectListItem 
           { 
            Text = PI.Project_Name.ToString(), 
            Value = PI.pkiProjectID.ToString(), 
            Selected = true 
           }).ToArray(); 

      PIVM.SelectedProjectID = ProjectID; 

      PIVM.ProjectList = new SelectList(ProjectData, "Value", "Text", ProjectID); 
     } 

     return View(PIVM); 
    } 

(該專案編號參數從我的着陸頁的WebGrid選擇未來)

View: 

@Html.DropDownListFor(m => m.SelectedProjectID, new SelectList(Model.ProjectList, "Value", "Text", Model.SelectedProjectID), new { @class = "form-control" }) 

我希望這可以幫助別人,以及。