0

これは、Employee と Employee リストの 2 つのクラスを持つモデル クラスです。

 namespace EditMultiplerecords.Models
{
    public class Employee
    {

        public int Id { get; set; }
        public string Name { get; set; }
    }
    public class Employeelist : IEnumerable<Employee>
    {
        public List<Employee> employee { get; set; }

        public IEnumerator<Employee> GetEnumerator()
        {
            return employee.GetEnumerator();
        }

        System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
        {
            return employee.GetEnumerator();
        }
    }

}

これは、JavaScriptを使用して編集するためのコードを書いている私のビューです

    @model EditMultiplerecords.Models.Employeelist
@{
    ViewBag.Title = "Homepage";
}
<link href="../../Content/StyleSheet1.css" rel="stylesheet" type="text/css" />
<script src="../../Scripts/jquery-1.6.2.min.js" type="text/javascript"></script>
<script type="text/javascript">

    $(function () {

        $('.editor input').blur(function () {
            $(this).hide();
            $(this).closest('p').find('label').html($(this).val()).show();

        });

        $('.editor label').click(function () {
            $(this).hide();
            $(this).closest('p').find('input').show();

        });
    });
</script>
@foreach (var item in Model)
{

    using (Html.BeginForm())
    { 
    <div class="editor">
        <p>
            @Html.HiddenFor(x => item.Id)
            @Html.LabelFor(x => item.Name, item.Name)
            @Html.EditorFor(x => item.Name)
            <input type="submit" value="OK" />
        </p>
    </div> 

    }
@*        @Html.Partial("Details", item);*@
}

そして、このコントローラークラス

  public ActionResult Homepage()
    {
        Employeelist el = new Employeelist();
        el.employee = new List<Employee>();
        el.employee.Add(new Employee { Id = 1, Name = "Rahul" });
        el.employee.Add(new Employee { Id = 2, Name = "America" });
        el.employee.Add(new Employee { Id = 3, Name = "NewJersey" });
        return View(el);

    }
    [HttpPost]
    public ActionResult Homepage(Employeelist el)
    {
        return View(el);
    }

私の問題は、Rahul、America、または NewJersey を編集するときに、Post Action iam で、更新されたリストではなく null 値の空のリストを取得することです。

4

1 に答える 1

0

変更されたリストを受け入れるには、@foreach (var item in Model)内部にループを追加する必要がありますusing (Html.BeginForm())

using (Html.BeginForm())
{

    @foreach (var item in Model)
    { 
    <div class="editor">
        <p>
            @Html.HiddenFor(x => item.Id)
            @Html.LabelFor(x => item.Name, item.Name)
            @Html.EditorFor(x => item.Name)
        </p>
    </div> 

    }
}
       <input type="submit" value="OK" />

@*        @Html.Partial("Details", item);*@

-- Accept formCollection を編集

[HttpPost]
public ActionResult Homepage(FormCollection formCollection)
{
    var itemid = formCollection.GetValue("item.id");
    var itemname= formCollection.GetValue("item.name");
---//use values to send it back to view----
    return View();
}
于 2012-07-12T07:21:58.130 に答える