Mvc Razor在同一视图中列出和编辑每个列表项的提交按钮

时间:2018-05-01 13:37:44

标签: c# asp.net-mvc razor

我是MVC Razor的新手,请帮我实现这个, 我有MVC Razor视图 我需要在同一视图中实现列表和编辑 在视图中,有一个列表将列出集合中的记录

@foreach (var item in Model.IncidentListmodel). 

该列表包含每个记录的TextArea,Button。

@Html.TextAreaFor(modelItem => item.Note, 2, 20, new { maxlength = 50 })

<input type="button" title="Save" value="Save" onclick="location.href='@Url.Action("Updateinc", "Incident", new { id = item.Id, name = item.Name, note = item.Note})'" />

我的目的是为每个列表项记录,用户应该能够编辑在文本区域中填充的内容并修改内容,并可以使用相应的按钮保存(该特定记录)。

更多详情:

以下是我试图实施的细节 每个列表项都包含一个文本区域(此处列出的数据正确)和每个列表项的按钮。点击按钮时,文本区域中的新内容(我从UI修改)应该更新(我可以编写更新代码)。但是在点击按钮时,在更改文本区域的内容后,控制器只获得旧值。

查看:

<table>
    @foreach (var item in Model.IncidentListmodel)
    {
        string class1 = item.Id % 2 == 0 ? "orangeRaw" : "blueRaw";
        <tr class="@class1">
            <td>@Html.DisplayFor(modelItem => item.Name)</td>
            <td>@Html.DisplayFor(modelItem => item.Title)</td>
            <td>
                @Html.TextAreaFor(modelItem => item.Note, 2, 20, new { maxlength = 50 })
            </td>
            <td>
                <input type="button" title="Save" value="save" onclick="location.href='@Url.Action("Updateinc", "Incident", new { id = item.Id, name = item.Name, note = item.Note})'" />
            </td>
        </tr>
    }
</table>

控制器:

public ActionResult Updateinc(int id,string name,string note,int? status )
{
    return View();
}

1 个答案:

答案 0 :(得分:0)

您需要form代码才能{em}提交HttpPost作为 Stephen Muecke 。诀窍是使用 for loop 生成正确的 ID ,或者创建 Partial查看

我喜欢使用局部视图,因为它有点清洁。

enter image description here

enter image description here

模型

public class SampleViewModel
{
    public IList<IncidentListmodel> IncidentListmodel = new List<IncidentListmodel>();
}

public class IncidentListmodel
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Title { get; set; }
    public string Note { get; set; }
}

视图

@model AspNetMvc.Models.SampleViewModel

@foreach (var item in Model.IncidentListmodel)
{
    @Html.Partial("_UpdatePartial", item)
}

部分视图(_UpdatePartial.cshtml)

@model AspNetMvc.Models.IncidentListmodel

@using (Html.BeginForm("Updateinc", "Home"))
{
    @Html.HiddenFor(m => m.Id)
    @Html.HiddenFor(m => m.Name)

    @Html.DisplayFor(m => m.Name)
    @Html.DisplayFor(m => m.Title)

    @Html.TextAreaFor(m => m.Note, 2, 20, new { maxlength = 50 })

    <button type="submit">Update</button>
}

控制器

public class HomeController : Controller
{
    public ActionResult Updateinc()
    {
        var model = new SampleViewModel
        {
            IncidentListmodel = new List<IncidentListmodel>
            {
                new IncidentListmodel {Id = 1, Name = "One", Note = "Sample text"},
                new IncidentListmodel {Id = 2, Name = "Two"},
                new IncidentListmodel {Id = 3, Name = "Three"},
            }
        };
        return View(model);
    }

    [HttpPost]
    public ActionResult Updateinc(IncidentListmodel viewModel)
    {
        // Rediret to different page.
        return RedirectToAction("Index");
    }
}