Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Не понимаю чего то принципиального в ASP.NET MVC

4.8K
23 июля 2011 года
sealmu
53 / / 28.02.2007
при запросе : /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>
5
25 июля 2011 года
hardcase
4.5K / / 09.08.2005
Цитата: sealmu
Как он показывает новые данные? откуда получил?

Из HTTP-запроса вестимо. Читаем про: Form Data, параметры в Url и Hidden-поля.

5
25 июля 2011 года
hardcase
4.5K / / 09.08.2005
Цитата: sealmu

почему static MyController() вызываеться только 1 раз??
ведь каждый раз это новый запрос!


Он вызыватся один раз при инициализации класса в домене приложения. HTTP-запросы тут ни при чем.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог