2017-07-04 34 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" /> 
} 

注:请包括模型

的正确命名空间
相关问题