Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.
Например, ниже - класс ученика, который будет использовать его в нашем коде.
public class Student {
private int id;
public int getId() {
return this.id;
}
public setId(int newId) {
this.id = newId;
}
}
Приведенный ниже код дает вам исключение с нулевым указателем.
public class School {
Student obj_Student;
public School() {
try {
obj_Student.getId();
}
catch(Exception e) {
System.out.println("Null Pointer ");
}
}
}
Поскольку вы используете Obj_Student
, но вы забыли инициализировать его, как в правильном коде, показанном ниже:
public class School {
Student obj_Student;
public School() {
try {
obj_Student = new Student();
obj_Student.setId(12);
obj_Student.getId();
}
catch(Exception e) {
System.out.println("Null Pointer ");
}
}
}
Я думаю, что Вы хотите, это:
Html.ActionLink(article.Title,
"Login", // <-- Controller Name.
"Item", // <-- ActionMethod
new { id = article.ArticleID }, // <-- Route arguments.
null // <-- htmlArguments .. which are none. You need this value
// otherwise you call the WRONG method ...
// (refer to comments, below).
)
Это использует следующий метод подпись ActionLink:
public static string ActionLink(this HtmlHelper htmlHelper,
string linkText,
string controllerName,
string actionName,
object values,
object htmlAttributes)
два аргумента были переключены [приблизительно 119]
Html.ActionLink(article.Title,
"Item", // <-- ActionMethod
"Login", // <-- Controller Name.
new { id = article.ArticleID }, // <-- Route arguments.
null // <-- htmlArguments .. which are none. You need this value
// otherwise you call the WRONG method ...
// (refer to comments, below).
)
, Это использует следующий метод подпись ActionLink:
public static string ActionLink(this HtmlHelper htmlHelper,
string linkText,
string actionName,
string controllerName,
object values,
object htmlAttributes)
аргументы находятся в том же порядке как MVC2, однако значение идентификатора больше не требуется:
Html.ActionLink(article.Title,
"Item", // <-- ActionMethod
"Login", // <-- Controller Name.
new { article.ArticleID }, // <-- Route arguments.
null // <-- htmlArguments .. which are none. You need this value
// otherwise you call the WRONG method ...
// (refer to comments, below).
)
Это избегает жесткого кодирования любая логика маршрутизации в ссылку.
<a href="/Item/Login/5">Title</a>
Это даст Вам следующий вывод HTML, принимая:
article.Title = "Title"
article.ArticleID = 5
..
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);
Я хотел добавить к ответ Joseph Kingry . Он предоставил решение, но сначала я не мог заставить его работать любой и получил результат точно так же, как Adhip Gupta. И затем я понял, что маршрут должен существовать во-первых, и параметры должны соответствовать маршруту точно. Таким образом, у меня были идентификатор и затем текстовый параметр для моего маршрута, который также должен был быть включен также.
Html.ActionLink(article.Title, "Login", "Item", new { id = article.ArticleID, title = article.Title }, null)
Html.ActionLink(article.Title, "Login/" + article.ArticleID, 'Item")
Вы могли бы хотеть посмотреть RouteLink()
метод. Тот позволяет Вам определить все (кроме текста ссылки, и направьте имя) с помощью словаря.