我是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();
}
答案 0 :(得分:0)
您需要form
代码才能{em}提交HttpPost
作为 Stephen Muecke 。诀窍是使用 for loop 生成正确的 ID ,或者创建 Partial查看的。
我喜欢使用局部视图,因为它有点清洁。
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)
}
@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");
}
}