Я новичок в MVC ASP и нуждаюсь в вашей помощи. Я хотел бы передать список с точки зрения контроллера, но каждый раз, когда я отправляю свою форму, список пуст (null) в контроллере.MVC 4 Передача списка с точки зрения контроллера
Вот моя модель:
namespace ArcheryComp.Models
{
[MetadataType(typeof(Participe))]
public class Participe
{
[Required]
[Display(Name = "Id Archer")]
public int idArcher { get; set; }
[Required]
[Display(Name = "Id Tournoi")]
public int IdTournament { get; set; }
[Required]
[Display(Name = "Division")]
public int division { get; set; }
[Required]
[Display(Name = "Categorie")]
public string categorie { get; set; }
[Required]
[Display(Name = "Score 1")]
public int ArchScore1 { get; set; }
[Display(Name = "X")]
public int ArchScore1_X_6 { get; set; }
[Display(Name = "10")]
public int ArchScore1_10_5 { get; set; }
[Required]
[Display(Name = "Score 2")]
public int ArchScore2 { get; set; }
[Display(Name = "X")]
public int ArchScore2_X_6 { get; set; }
[Display(Name = "10")]
public int ArchScore2_10_5 { get; set; }
[Required]
[Display(Name = "Total")]
public int ArchTotalScore { get; set; }
[Display(Name = "Total X")]
public int ArchTotalScore_X_6 { get; set; }
[Display(Name = "Total 10")]
public int ArchTotalScore_10_5 { get; set; }
public List<Participe> liste { get; set; }
}
}
Вот мой контроллер:
namespace ArcheryComp.Controllers
{
public class ParticipeController : Controller
{
private ArcheryCompEntities db = new ArcheryCompEntities();
......
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult EncodeResult(IList<Participe> parti)
{
foreach (Participe item in parti)
{
var data = from part in db.Participe
where part.IdArcher == item.IdArcher && part.IdTournament == item.IdTournament
select part;
item.ArchScore1 = item.ArchScore1;
item.ArchScore2 = item.ArchScore2;
item.ArchTotalScore = item.ArchTotalScore;
}
А вот мое мнение:
@model List<ArcheryComp.Participe>
@{
ViewBag.Title = "EncodeResult";
}
<h2>Encoder Resultats</h2>
@using (Html.BeginForm("EncodeResult","Participe",FormMethod.Post))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(false)
<table>
<tr>
<th>
@Html.LabelFor(model => Model[0].Archers.Nom)
</th>
<th>
@Html.LabelFor(model => Model[0].Archers.Prenom)
</th>
<th>
@Html.LabelFor(model => Model[0].Divisions.DivDescription)
</th>
<th>
@Html.LabelFor(model => Model[0].Categorie)
</th>
<th>
@Html.LabelFor(model => Model[0].ArchScore1, new {style = "width: 10px;"})
</th>
<th>
@Html.LabelFor(model => Model[0].ArchScore2, new {style = "width: 10px;"})
</th>
<th>
@Html.LabelFor(model => Model[0].ArchTotalScore, new {style = "width: 10px;"})
</th>
</tr>
@for(int i = 0; i < Model.Count() ; i++)
{
<tr>
<td>
@Html.TextBox("archers["[email protected]+"].IdArcher", Model[i].Archers.Nom)
@Html.ValidationMessageFor(x => x[i].IdArcher)
</td>
<td>
@Html.TextBox("archers["[email protected]+"].Prenom", Model[i].Archers.Prenom)
</td>
<td>
@Html.TextBox("archers["[email protected]+"].Division", Model[i].Divisions.DivDescription)
@Html.ValidationMessageFor(x => x[i].Divisions.Id)
</td>
<td>
@Html.TextBox("archers["[email protected]+"].Categorie", Model[i].Categorie)
@Html.ValidationMessageFor(x => x[i].Categorie)
</td>
<td>
@Html.TextBox("suma["[email protected]+"]", Model[i].ArchScore1, new{ @onchange = "updatesum()"})
@Html.ValidationMessageFor(x => x[i].ArchScore1)
</td>
<td>>
@Html.TextBox("sumb["[email protected]+"]", Model[i].ArchScore2, new { @onchange = "updatesum()" })
@Html.ValidationMessageFor(x => x[i].ArchScore2)
</td>
<td>
@Html.TextBox("sumt["[email protected]+"]", Model[i].ArchTotalScore, new { @onchange = "updatesum()" })
@Html.ValidationMessageFor(x => x[i].ArchTotalScore)
</td>
</tr>
}
</table>
<p>
<input type="submit" value="Save" />
</p>
}
Можете ли вы помочь разобраться в этом? Большое спасибо заранее !!!
Является ли ваш метод действий получающим список со стороны клиента? если да, то можете ли вы поделиться клиентским кодом, который отправляет список –
, вы не можете получить такую коллекцию, как список в простых сообщениях формы. вам нужно написать код jquery/javascript, который будет готовить объект коллекции на стороне клиента и отправлять его на сервер. Вы можете добавить свой отзыв. http://webcognoscere.com/post/How-to-POST-a-JSON-object-to-a-Controller-Action.aspx –
@Tanzeel, конечно же вы можете разместить коллекцию !. –