Просмотр не обновляется после публикации с 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 моей страницы для моей страницы, и он содержит список устройств. Это нормально, вместо того, чтобы передавать список устройств в качестве модели представления на страницу? Я делаю это потому, что хочу получить доступ к другим спискам на более позднем этапе.
У кого-нибудь есть предложения?
Очень признателен.