при запросе : /My/MyIndex получаю 2 строчки из модели при нажатии на EDIT попадаю в форму редактирования редактирую и жму SUBMIT при открытии MyIndex вижу свои изменения, но не могу понять как они сохраняються в объекте GenerateLogOnModel (DB)??? ведь нету ViewState! почему static MyController() вызываеться только 1 раз?? ведь каждый раз это новый запрос! И даже при вызове RedirectToAction("MyIndex"); я не передаю туда измененую model! Как он показывает новые данные? откуда получил? ---Model--- Код | public class GenerateLogOnModel { List<LogOnModel> data;
public List<LogOnModel> Data { get { return data; } set { data = value; } }
public GenerateLogOnModel() { data = new List<LogOnModel>(); data.Add( new LogOnModel { UserName = "vasya", Password = "12345", RememberMe = true });
data.Add( new LogOnModel { UserName = "kolya", Password = "11111", RememberMe = true }); } }
|
---Controller--- Код | public class MyController : Controller { static GenerateLogOnModel DB;
static MyController() { DB = new GenerateLogOnModel(); }
public ActionResult MyIndex() { var model = DB.Data; return View(model); }
public ActionResult Edit(string UserName) { var model = DB.Data.Find(f => f.UserName == UserName.ToString()); return View(model); }
[HttpPost] public ActionResult Edit(string UserName, FormCollection collection) { var model = DB.Data.Find(f => f.UserName == UserName.ToString());
if (TryUpdateModel(model)) { return RedirectToAction("MyIndex"); }
return View(model); }
}
|
---Views--- [myindex.cshtml] Код | @model IEnumerable<MvcApplication1.Models.LogOnModel>
@{ ViewBag.Title = "MyIndex"; }
<h2>MyIndex</h2>
<table>
@foreach (var item in Model) {
using(Html.BeginForm()) { <tr> <td> @Html.ActionLink("Edit","Edit", new { UserName = item.UserName}) </td> <td> @item.UserName </td> <td> @item.Password</td> </tr>
} }
</table>
|
[edit.cshtml] Код | @model MvcApplication1.Models.LogOnModel
@{ ViewBag.Title = "Edit"; }
<h2>Edit</h2>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script> <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
@using (Html.BeginForm()) { @Html.ValidationSummary(true) <fieldset> <legend>LogOnModel</legend>
<div class="editor-label"> @Html.LabelFor(model => model.UserName) </div> <div class="editor-field"> @Html.EditorFor(model => model.UserName) @Html.ValidationMessageFor(model => model.UserName) </div>
<div class="editor-label"> @Html.LabelFor(model => model.Password) </div> <div class="editor-field"> @Html.EditorFor(model => model.Password) @Html.ValidationMessageFor(model => model.Password) </div>
<div class="editor-label"> @Html.LabelFor(model => model.RememberMe) </div> <div class="editor-field"> @Html.EditorFor(model => model.RememberMe) @Html.ValidationMessageFor(model => model.RememberMe) </div>
<p> <input type="submit" value="Save" /> </p> </fieldset> }
<div> @Html.ActionLink("Back to List", "Index") </div>
|
|