Метод HTML.ActionLink

Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.

Например, ниже - класс ученика, который будет использовать его в нашем коде.

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 ");
        }
    }
}
240
задан sharptooth 10 December 2013 в 22:21
поделиться

4 ответа

Я думаю, что Вы хотите, это:

ASP.NET MVC1

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)

ASP.NET MVC2

два аргумента были переключены [приблизительно 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)

ASP.NET MVC3 +

аргументы находятся в том же порядке как 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, принимая:

  1. article.Title = "Title"
  2. article.ArticleID = 5
  3. у Вас все еще есть следующий маршрут, определенный

..

routes.MapRoute(
    "Default",     // Route name
    "{controller}/{action}/{id}",                           // URL with parameters
    new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
);
477
ответ дан Graviton 23 November 2019 в 03:17
поделиться

Я хотел добавить к ответ Joseph Kingry . Он предоставил решение, но сначала я не мог заставить его работать любой и получил результат точно так же, как Adhip Gupta. И затем я понял, что маршрут должен существовать во-первых, и параметры должны соответствовать маршруту точно. Таким образом, у меня были идентификатор и затем текстовый параметр для моего маршрута, который также должен был быть включен также.

Html.ActionLink(article.Title, "Login", "Item", new { id = article.ArticleID, title = article.Title }, null)
30
ответ дан Community 23 November 2019 в 03:17
поделиться
Html.ActionLink(article.Title, "Login/" + article.ArticleID, 'Item") 
10
ответ дан Adhip Gupta 23 November 2019 в 03:17
поделиться

Вы могли бы хотеть посмотреть RouteLink() метод. Тот позволяет Вам определить все (кроме текста ссылки, и направьте имя) с помощью словаря.

17
ответ дан abatishchev 23 November 2019 в 03:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: