Я все еще мокну от RazorPages, но уже несколько лет пользуюсь ASP.Net. Большинство примеров ссылаются на контроллеры MVC и действия. Да, я знаю, что бритва похожа на «мини-контроллер», а именованные методы-обработчики эквивалентны действиям. Однако, я не могу заставить свой ViewComponent выполнить метод, на который я ссылаюсь из DropDownList.
В представлении моего VC у меня есть DropDownList, который пытается использовать Ajax для привязки к одному изметоды-обработчики.
@(Html.Kendo().DropDownList()
.Name("Customer")
.DataTextField("Name")
.DataValueField("Value")
.Events(e => e.Change("change"))
.DataSource(source => source
.Ajax()
.ServerOperation(true)
.Read(r => r.Url("./BoxTerminal?handler=BoxList"))
)
.Value("1")
.AutoWidth(true)
)
Этот компонент внедряется в его родительскую страницу, и когда я запускаю сеанс отладки, я получаю точку останова для достижения в моем методе InvokeAsync VC, но когда ответ завершается, я смотрю наконсоль разработчика в браузере, и я получил ошибку 404, которая пытается вызвать метод BoxList
в моем BoxTerminal ViewComponent. Точка останова здесь никогда не получает удар. Глядя в консоль разработчика, я вижу 404http://localhost:60101/BoxTerminal?handler=BoxList
Сам ViewComponent находится в папке Pages| __Components| __BoxTerminal.cs| __Default.cshtml
public JsonResult OnPostBoxList([DataSourceRequest] DataSourceRequest request)
{
List<SimpleStringPair> retval = new List<SimpleStringPair>();
retval = ... do some stuff, return a list
return new JsonResult(retval.ToDataSourceResult(request));
}