Как исправить мой маршрут, чтобы устранить проблему с помощью AJAX .load()конфигурации Route ищет идентификатор в моем URL
Я изменил свой маршрут к моему spacecontroller так, что он выглядит как этот
routes.MapRoute(
name: "SpaceCleanRoute",
url: "Space/{id}",
defaults: new { controller = "Space", action = "Index" }
);
так, что у меня есть более чистый маршрут и когда пользователь хочет видеть пространство URL-адрес будет выглядеть следующим образом
www.mysite/пространства/12345
проблемы у меня сейчас, когда мой файл JS называет .load(), как это, где spaceoverview моего действие
$("#partialPageContainer").load('/Space/SpaceOverview', function (response, status, xhr) {
alert("Load was performed.");
});
Я получаю сообщение об ошибке говорящего
Параметров словарь содержит нулевую запись для параметра «id» не-nullable типа «System.Int32» для метода «System.Web.Mvc.ActionResult Index (Int32)» в «YogaBandy2017.Controllers.SpaceController». Необязательный параметр должен быть ссылочным типом, нулевым типом или объявлен как необязательный параметр. Имя параметров: параметры
Так что я должен поместить идентификатор после URL, как это, что это не то, что я хочу, или не кажется мне правильным
Как я могу это исправить или это как работает маршрутизация? Я своего рода новичок в MVC маршрутизации с ASP.Net
$("#partialPageContainer").load('/Space/SpaceOverview/1', function (response, status, xhr) {
alert("Load was performed.");
});
ОБНОВЛЕНО - Я думаю, теперь я буду использовать «/ пространство/ActionName/1» для подключения к каждому действию, пока я не могу найти лучшего решение.
Вы пытались сделать идентификатор и нулевым первым, просто чтобы убедиться, что он попал в правый маршрут? – Faisal
Я не уверен, что вы имеете в виду. Можете ли вы привести пример? Если я использую url '/ space/spaceoverview/{id}', то он работает, где id - любое число. Если я не использую id, генерируется исключение, и действие никогда не вводится. Это просто не кажется правильным, и я хотел бы знать, что есть способ сделать это, поэтому мне не нужно вводить идентификатор для загрузки? – user1186050
''/Space/SpaceOverview' означает, что вы вызываете метод 'Index()' 'SpaceController '' (как определено вашим маршрутом), и вы передаете текст« SpaceOverview »в параметр« int id »(который, конечно, сбой и 'id' -' null' - отсюда исключение). Если вы хотите использовать метод 'SpaceOverview()', тогда вам нужно удалить это определение маршрута или создать определенные маршруты для каждого метода до маршрута 'SpaceCleanRoute' или добавить ограничение для обеспечения того, чтобы второй сегмент был' int' –