2016-05-18 87 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" }) 

我希望这可以帮助别人,以及。