Я могу успешно выполнить серверный код через HTTP-запросы в ASP .NET Core, но не могу сохранить информацию в модели между запросами.
Я надеялся, что переключение с частной переменной на службу, созданную с помощью среды внедрения зависимостей ASP NET Core, решит мою проблему, но, увы, нет.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Earley_Parser.Language;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.AspNetCore.Mvc.ViewFeatures;
namespace Storyteller.Pages.EarleyParser {
public class IndexModel : PageModel {
public readonly IGrammar _grammarContext;
public IndexModel(IGrammar grammarContext) {
_grammarContext = grammarContext;
}
[HttpGet]
public IActionResult OnGet() {
_grammarContext.Add(new GrammarRule("", "S"));
_grammarContext.Add(new GrammarRule("A", "S"));
_grammarContext.Add(new GrammarRule("AA", "A"));
_grammarContext.Add(new GrammarRule("a", "A"));
return Page();
}
[HttpPost]
public IActionResult OnPostAdd(String grammar_addRule_from, String grammar_addRule_to) {
_grammarContext.Add(new GrammarRule(grammar_addRule_to, grammar_addRule_from));
return new PartialViewResult {
ViewName = "_ContextFreeGrammar",
ViewData = new ViewDataDictionary<Grammar_2>(ViewData, _grammarContext)
};
}
[HttpPost]
public IActionResult OnPostRemove(Int32 id) {
_grammarContext.Remove(_grammarContext.ElementAt(id));
return new PartialViewResult {
ViewName = "_ContextFreeGrammar",
ViewData = new ViewDataDictionary<Grammar_2>(ViewData, _grammarContext)
};
}
[HttpPost]
public IActionResult OnPostUpdateStart(Char grammar_start) {
_grammarContext.Start = grammar_start;
return new PartialViewResult {
ViewName = "_ContextFreeGrammar",
ViewData = new ViewDataDictionary<Grammar_2>(ViewData, _grammarContext)
};
}
}
}
Мой идеальный сценарий - когда страница загружается, инициализируется _grammarContext, а последующие HTTP-запросы изменяют состояние _grammarContext. Этот сценарий на самом деле происходит однако, перед выполнением любого HTTP-запроса
IndexModel(IGrammar grammarContext)
вызывается, и _grammarContext получает сброс своего состояния посредством внедрения зависимости. Как я могу остановить этот сброс?