Просмотр не обновляется после публикации с ASP.Net MVC

Я пытаюсь создать очень простой веб-сайт для отображения некоторых тестовых данных, которые добавляются и обновляются с использованием asp.net mvc (с бритвой), но всякий раз, когда данные публикуются в моем Post метод, мои данные не обновляются. Я пытаюсь получить неупорядоченный список (на данный момент), который будет обновлен во второй раз, когда сообщение сработало.

Я публикую свои данные как JSON используя следующий код:

string jsonDeviceData = SerializeHelper.Serialize<IDeviceData>(deviceData, 
                        ContentTypeEnum.Json, false);

HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(localServerUrl);
webRequest.Method = "POST";
webRequest.ContentType = "application/json"; //"application/x-www-form-urlencoded";

byte[] deviceDataBuffer = Encoding.UTF8.GetBytes(jsonDeviceData);

Task<Stream> requestTask = webRequest.GetRequestStreamAsync();
using (Stream requestStream = requestTask.Result)
{
    requestStream.Write(deviceDataBuffer, 0, deviceDataBuffer.Length);
}

Task<WebResponse> responseTask = webRequest.GetResponseAsync();
using (StreamReader requestReader = new StreamReader(responseTask.Result
           .GetResponseStream()))
{
    string webResponse = requestReader.ReadToEnd();
    Debug.WriteLine("Web Response: " + webResponse);
}

Ниже приведен код, который я использую в методе POST. Не беспокойтесь о том, что логика настолько проста и, возможно, ужасна, но я просто балуюсь этой идеей. Данные будут храниться в базе данных SQL Server, и я буду использовать EF, если я решу пойти дальше с этим:

[HttpPost()]
public ActionResult Index(DeviceModel model)
{
    if (ModelState.IsValid && model != null)
    {
        var deviceViewModelList = HttpContext.Application["DeviceList"] 
            as List<DeviceViewModel> ?? new List<DeviceViewModel>();

        if (deviceViewModelList.All(m => !string.Equals(m.Name,
                    model.Name, 
                    StringComparison.InvariantCultureIgnoreCase)))
        {
            deviceViewModelList.Add(new DeviceViewModel(model));
        }

        HttpContext.Application["DeviceList"] = deviceViewModelList;

        var homePageViewModel = new HomePageViewModel
        {
            DeviceList = deviceViewModelList
        };

        return RedirectToAction("Index");
    }
    else
    {
        return View();
    }
}

Моя модель прошла правильно и все работает нормально, когда данные публикуются, моя страница не обновляется, даже после вызова RedirectToAction("Index");

Приведенный ниже код вызывается при первой загрузке страницы и после вызова RedirectToActio("Index"):

public ActionResult Index()
{
    ViewBag.Title = "Test Server";

    var deviceViewModelList = HttpContext.Application["DeviceList"] 
        as List<DeviceViewModel> ?? new List<DeviceViewModel>();

    var homePageViewModel = new HomePageViewModel
    {
        DeviceList = deviceViewModelList
    };

    return View(homePageViewModel);
}

Вот код, который у меня есть на моей странице.cshtml:

<ul>
    @if (Model?.DeviceList != null)
    {
        foreach (var device in Model.DeviceList)
        {
            <li>@device.Name</li>
        }
    }
</ul>
  • Если я проверю FiddlerДанные, в данном случае, список строится правильно.
  • Если я нажму F5, мои данные отображаются правильно.

Я прочитал очень много статей на этом этапе, и у меня до сих пор нет решения, одна из которых - Просмотр, не обновляется после публикации, и пока я пытался ModelState.Clear(); и как вы можете видеть из моего кода, который я использую @device.Name что является одним из предложений. Я не уверен насчет последнего.

Еще одна статья, которую я прочитал, была ASP NET MVC Post Redirect Get Pattern, но опять же безрезультатно.

Я явно что-то упускаю.

Большинство статей / примеров, на которые я смотрел, относятся к публикации через Form и я знаю, что я публикую, но это то же самое, что и публикация через Form?

Также viewModel моей страницы для моей страницы, и он содержит список устройств. Это нормально, вместо того, чтобы передавать список устройств в качестве модели представления на страницу? Я делаю это потому, что хочу получить доступ к другим спискам на более позднем этапе.

У кого-нибудь есть предложения?

Очень признателен.

0 ответов

Другие вопросы по тегам