2017-07-04 33 views
-1

我有我的視圖中的靜態值的選擇控件,我打算用戶選擇一個值,它綁定到我的控制器,所以我可以在所需的操作方法中使用它。如何將DropDownListFor的值綁定到我的控制器?

我的觀點 -

@model StockProject.ViewModels.EquityViewModel 
@using (Html.BeginForm(FormMethod.Post)){  

@{ 
    var selectList = new SelectList(
    new List<SelectListItem> 
    { 
    new SelectListItem {Text = "BOOKED", Value = "1"}, 
    new SelectListItem {Text = "EXECUTING", Value = "2"}, 
    new SelectListItem {Text = "EXECUTED", Value = "3"}, 
    new SelectListItem {Text = "SUSPENDED", Value = "4"}, 
    new SelectListItem {Text = "CANCELLED", Value = "5"}, 
    }, "Value", "Text"); 
    } 
@Html.DropDownListFor(model => model.status, selectList, new { @class = "form-control", name = "status", id = "status" }) 

<div class="col-md-3 form-group">       
    <button type="button" class="btn btn-success btn-block form-control" onclick="location.href='@Url.Action("Equity", "Order")'"> 
     Go 
     <i class="fa fa-arrow-circle-right"></i> 
    </button> 
</div> 
} 

視圖模型 -

public class EquityViewModel 
{ 
    public int CustomerId { get; set; } 
    public string status { get; set; }   
    public DateTime startdate { get; set; } 
    public DateTime enddate { get; set; }   
    public List<ListEquityOrder> ListOrderEquity { get; set; } 

    public EquityViewModel() 
    { 
     ListOrderEquity = new List<ListEquityOrder>(); 

    } 
} 

控制器 -

[HttpGet] 
public IActionResult Equity() 
{ 
    var modelview = new EquityViewModel(); 
    var model = new EquityRequest(); 

    model.CustomerId = _appSettings.TestCustomerId; 
    model.RequestStartPoint = 0; 
    model.NoOfRequests = 1000000; 
    model.Null = null; 
    model.Status = modelview.status; 
    model.StartDate = modelview.StartDate; 
    model.EndDate = modelview.EndDate; 
    model.Equity = "EQUITY"; 

    EquityResponse ListEquityOrders = _genericService.CallSoapAction<EquityResponse, EquityRequest>(model, "findCustomerOrdersBySecurityType"); 


    List<ListEquityOrder> findCusOrder = new List<ListEquityOrder>(); 
    foreach (var t in ListEquityOrders.Item) 
    { 
    ListEquityOrder listOrder = new ListEquityOrder(); 

    listOrder.BusinessOffice = t.BusinessOffice; 
    listOrder.CustomerLabel = t.CustomerLabel; 
    listOrder.CustomerName = t.CustomerName; 
    listOrder.Exchange = t.Exchange; 
    listOrder.FixOrderStatus = t.FixOrderStatus; 
    //adding other data values to the list 

    findCusOrder.Add(listOrder); 
    } 
    modelview.ListOrderEquity = findCusOrder; 

    return View(modelview); 
} 

隨時提交按鈕,用戶點擊,沒有值傳遞的控制 - 在DropDownListFor和TexBoxes。我已經嘗試過FormCollection,但不起作用。請如何解決此問題?

+0

您還沒有顯示您的POST方法 –

+0

您的表單沒有提交按鈕。你所擁有的只是一個標準的按鈕,它使用Javascript來創建一個GET,並且不會向該方法傳遞任何東西。 –

+0

如何實現提交按鈕?在剃刀? –

回答

0

您可以使用以下代碼獲取預期的輸出。

在模型中

public enum BookingDetails 
    { 
     BOOKED = 1, EXECUTING = 2, EXECUTED = 3, SUSPENDED = 4, CANCELLED = 5 
    } 

    public class SomeModel 
    { 
     public BookingDetails bookingDetails { get; set; } 

     public static IEnumerable<SelectListItem> GetBookingDetailsSelectItems() 
     { 
      yield return new SelectListItem { Text = "BOOKED", Value = "1" }; 
      yield return new SelectListItem { Text = "EXECUTING", Value = "2" }; 
      yield return new SelectListItem { Text = "EXECUTED", Value = "3" }; 
      yield return new SelectListItem { Text = "SUSPENDED", Value = "4" }; 
      yield return new SelectListItem { Text = "CANCELLED", Value = "5" }; 
     } 
    } 

注:以上模型只用下拉值的交易。如果你想要做更多的則下跌自由擴展的類

然後控制器應該像下面

public class MyController : Controller 
    { 
     // GET: My 
     public ActionResult MyAction() 
     { 
      // shows your form when you load the page 
      return View(); 
     } 

     [HttpPost] 
     public ActionResult MyAction(SomeModel model) 
     { 

      var selectedBookingDetails = model.bookingDetails;// this will be the selected dropdown item text. 

      return View(model); 
     } 
    } 

然後查看

@model SomeModel 

@using (Html.BeginForm("MyAction", "My", FormMethod.Post)) 
{ 
@Html.DropDownListFor(m => m.bookingDetails, SomeModel.GetBookingDetailsSelectItems()) 
<input type="submit" value="Send" /> 
} 

注:請包括模型

的正確命名空間
相關問題