2017-02-05 5 views
-1

Я пытаюсь передать все данные методу индекса HttpPost, но он работает неправильно.Передача данных из представления в контроллер в MVC

мой взгляд выглядит следующим образом:

<body> 
@using (Html.BeginForm()) 
{ 

    <select class="selectStyled" id="SelectBranch"> 
     @{ 
      var branches = Model.Select(x => x.Branch1).Distinct().ToList(); 
     } 
     <option value="">Pick-up location</option> 
     @foreach (var i in branches) 
     { 
      <option value="@i">@i</option> 
     } 
    </select> 

    <input type="text" placeholder="Pick Up Date" id="txtboxPickup" /> 
    <input type="time" /> 

    <input type="text" placeholder="Drop Off Date" id="txtboxDropoff" /> 
    <input type="time" /> 
    <input class="buttonStyle" style="background-color:white; color:black" type="submit" value="Search" /> 
} 
</body> 

Моя модель:

@model IEnumerable<MvcProject.Branch> 

В контроллере у меня есть два метода:

[HttpGet] 
    public ActionResult Index() 
    { 
     List<Branch> arr = me.Branches.ToList(); 
     return View(arr); 
    } 

    [HttpPost] 
    public ActionResult Index(Branch b) 
    { 
     /////////// 
     ////////// 
     return View(); 
    } 
+0

Вы должны обеспечить определение Branch – greenshade

+1

Вы должны зайти на сайт MVC и работать через учебники, чтобы узнать основы, в частности, как создавать свой вид с помощью сильно типизированных 'HtmlHelper'. В ваших ручных вводах даже нет атрибутов «имя», поэтому ничего не отображается, а модель в представлении «IEnumerable » означает, что ваш параметр метода POST должен быть «IEnumerable ' –

ответ

0

Как я понимаю, в действии Index вы хотите передать три значения: ветвь, пикап, значения отклонения. Лучший способ сделать это

1) Создание модели

public class BranchPostModel 
{ 
public int BranchId {get;set;} 
public string Pickup {get;set;} 
public string Dropoff{get;set;} 
} 

2) Изменение YOUT после действия индекса к:

[HttpPost] 
public ActionResult Index(BranchPostModel model) 
{ 
    /////////// 
    Branch b = me.Branches.First(i=>i.Id == model.BranchId); 
    var pickup = model.Pickup; 
    var dropoff = model.Dropoff; 
    ////////// 
    return View(); 
} 

3) Поместите соответствующие имена ваших входов/выберите в вашем View. Имя ваших входов в HTML должно соответствовать имени ваших свойств внутри вашего BranchPostModel

<body> 
@using (Html.BeginForm()) 
{ 

    <select class="selectStyled" name="BranchId" id="SelectBranch"> 
     @{ 
      var branches = Model.Select(x => x.Branch1).Distinct().ToList(); 
     } 
     <option value="">Pick-up location</option> 
     @foreach (var i in branches) 
     { 
      <option value="@i">@i</option> 
     } 
    </select> 

    <input type="text" placeholder="Pick Up Date" name="Pickup" id="txtboxPickup" /> 
    <input type="time" /> 

    <input type="text" placeholder="Drop Off Date" name="Dropoff" id="txtboxDropoff" /> 
    <input type="time" /> 
    <input class="buttonStyle" style="background-color:white; color:black" type="submit" value="Search" /> 
} 
</body> 
0

Попробуйте метод Ajax. Это помогает передавать любые данные в соответствующие действия

$.ajax({ 
    url: '@Url.Action("ControllerName","test")', 
    data: {data: item}, 
    type: 'POST', 
    success: function(data) { 
     Alert("Data passed Sucessfully"); 
    } 
});